【发布时间】:2013-03-01 07:06:03
【问题描述】:
我用这段代码下载小文件:
Var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
Idhttp1.get('http://mydomain.com/myfile.zip',ms);
ms.SaveToFile('myfile.zip');
ms.Free;
end;
但文件在存储到磁盘之前先保存在 RAM 中,因此可能难以下载大于 1Gb 的文件。有没有办法按部分下载文件?还是我需要使用 WinInet?提前致谢!
【问题讨论】:
-
最简单的选择是只使用
TFileStream而不是TMemoryStream,它会在下载文件时直接写入磁盘。IdHTTP.Get只要求TStream,这意味着您可以向它提供任何类型的流。 -
就像@Ken 所说,只需将
TMemoryStream替换为TFileStream。无论如何,不要忘记使用try..finally块来保护要发布的流。您的代码最终可能会修改为something like this。
标签: delphi delphi-xe2 wininet indy10