我使用这段代码来下载小文件:
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 WhiteTMemoryStream
替换为TFileStream
即可。无论如何,不要忘记使用try..finally
块来确保流被释放。你的代码最终可能会被修改成类似这样
。 - TLama