当我尝试下载大文件时,Delphi XE2 DataSnap REST - "Out of memory"

标签 delphi rest delphi-xe2 datasnap

我在 Delphi XE2 中创建了一个简单的 DataSnap REST 服务器,并且我有一个返回 TStream 对象来传输文件的方法。这很好用,但是当我尝试下载一个大文件(~2,5GB)时,我得到了一个

"out of memory"

服务器端的错误消息。

我想通过互联网浏览器下载该文件 ( http://localhost:8080/datasnap/rest/TServerMethods1/GetFile )。

rest服务可以返回大文件吗?

我读了这个question并尝试了当我使用小文件时效果很好的解决方案。

这是我的简单代码:

function TServerMethods1.GetFile: TStream;
var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('d:\file.exe', fmOpenRead);
  Result := FileStream;
end;

如何通过互联网浏览器从 REST 服务器下载大文件?

最佳答案

您的函数的结果是一个TStream,请尝试增加应用程序的内存量 How can I enable my 32-bit Delphi application to use 4gb of memory on 64-bit windows (via Wow64.exe)?

无论如何,您正在加载大量数据。您应该创建一个函数,以更小的 block 形式提供结果。

关于当我尝试下载大文件时,Delphi XE2 DataSnap REST - "Out of memory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450765/

相关文章:

delphi - 如何使用Delphi条件编译生成exe或dll?

delphi - Delphi XE4中不可勾选动态创建的TCheckBox

delphi - Delphi 控件中的 Ctrl+Backspace

javascript - 从 SharePoint 2013 REST API 对文件使用 moveto 或 copyto 时出现 "Not well formed JSON stream"

java - HttpServletRequest 到达 Java REST API 后可以为 null 吗?

delphi - TRichEdit 支持 Unicode 吗?

delphi - 以编程方式将 "full control"授予注册表项上的 "everyone"?

delphi - 创建一个简单的 Delphi IDE Expert

objective-c - RKObjectLoader使用数组参数截断我的路径

delphi - 如何在一个地方为多个应用程序定义应用程序版本?