【发布时间】:2012-05-04 14:25:44
【问题描述】:
我在 Delphi XE2 中创建了一个简单的 DataSnap REST 服务器,并且我有一个方法可以返回一个 TStream 对象来传输文件。这很好用,但是当我尝试下载一个大文件(~2,5GB)时,我得到了一个
“内存不足”
服务器端的错误消息。
我想通过互联网浏览器下载文件 (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;
如何通过 Internet 浏览器从 REST 服务器下载大文件?
【问题讨论】:
-
也许您可以让 Indy 以块的形式提供内容。
-
所有体面的 HTTP 服务器实现都传输响应流,而无需先将其完全加载到内存中(AFAIK Indy 做得对,因此不需要分块)。看起来 DataSnap REST 服务的实现很差。
标签: delphi rest delphi-xe2 datasnap