加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何通过TIdHTTP下载大文件?

发布时间:2020-12-15 09:08:54 所属栏目:大数据 来源:网络整理
导读:我用这段代码下载小文件: Var ms:TMemoryStream;begin ms:=TMemoryStream.Create; Idhttp1.get('http://mydomain.com/myfile.zip',ms); ms.SaveToFile('myfile.zip'); ms.Free;end; 但是文件在存储到磁盘之前保存在RAM中,因此可能难以下载文件 1Gb,例如.有
我用这段代码下载小文件:

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吗?提前致谢!

解决方法

TMemoryStream提供内存缓冲区,因此如果您下载到一个缓冲区,则需要有足够的内存来容纳您收到的所有内容.但它并不是唯一的流.您可以将Get方法传递给所需的任何类型的流,包括在收到它时将其内容写入磁盘的流.例如,使用TFileStream.

var
  s: TStream;

s := TFileStream.Create('myfile.zip',fmCreate);
try
  IdHttp1.Get(...,s);
finally
  s.Free;
end;

无论您在TMemoryStream上调用LoadFromFile还是SaveToFile,TFileStream都可能是更好的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读