我使用此代碼下載小文件:存儲到磁盤之前如何通過TIdHTTP下載大文件?
Var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
Idhttp1.get('http://mydomain.com/myfile.zip',ms);
ms.SaveToFile('myfile.zip');
ms.Free;
end;
但文件被保存在內存中,因此可能很難下載文件> 1GB,例如。有沒有辦法通過它的部分下載文件?或者我需要使用WinInet?提前致謝!
最簡單的方法是隻使用一個'TFileStream'而不是'TMemoryStream',因爲文件被下載這將寫入磁盤直接的。 'IdHTTP.Get'只是要求一個'TStream',這意味着你可以給它提供任何類型的流。 – 2013-03-13 11:26:41
這就像@Ken說,只需更換'用'TFileStream' TMemoryStream'。無論如何,不要忘記使用'try..finally'塊來釋放流。你的代碼最終可能會修改爲['this like like'](http://pastebin.com/GLVEKgLv)。 – TLama 2013-03-13 12:20:13