Memory 使用TIdFTP下载大文件时内存不足错误
我正在尝试使用TIdFTP(版本10.6.2.5366)从FTP服务器下载视频文件 我可以建立连接并开始下载文件,但过了一段时间-我猜大约500MB,它会抛出“内存不足”错误 凝固后Memory 使用TIdFTP下载大文件时内存不足错误,memory,ftp,indy,Memory,Ftp,Indy,我正在尝试使用TIdFTP(版本10.6.2.5366)从FTP服务器下载视频文件 我可以建立连接并开始下载文件,但过了一段时间-我猜大约500MB,它会抛出“内存不足”错误 凝固后 ADataChannel.IOHandler.LargeStream := True 在IdFTPDataChannelCreate过程中,我的代码简单如下:- with IdFTP do begin TransferType := ftBinary; Get(Filename, Destin
ADataChannel.IOHandler.LargeStream := True
在IdFTPDataChannelCreate过程中,我的代码简单如下:-
with IdFTP do
begin
TransferType := ftBinary;
Get(Filename, DestinationFolder + '\' + ShortFilename, True, False);
end;
我错过什么了吗?是否需要设置其他属性才能使其正常工作
任何帮助都将不胜感激
谢谢。
LargeStream
对TIdFTP
没有影响,因为文件大小不会在文件数据之前发送(此外,TIdFTP
为您设置LargeStream=True
)。我不知道这段代码怎么会引发“内存不足”错误,因为使用的内存很少。您使用的是通过TFileStream
直接下载到文件系统的Get()
版本(当然,TIdFileCreateStream
)TIdFTP
将从TIdFTP.IOHandler.RecvBufferSize
块(默认为32K)中的套接字读取文件数据,并按原样写入TFileStream
。如果使用压缩,开销会多一点,但不会太大。当错误出现时,调用堆栈到底是什么样子的?我完全弄糊涂了。我删减了代码片段,省略了导致问题的部分。现在修好了。但是谢谢你的评论——这很有帮助,到底是什么问题?由于它不是原始问题的一部分,因此无法按原样回答该问题,因此请更新或关闭它。