IdFTP1.Put 方法上传怎样指定需要续传部分的大小,续传怎么老是整个文件全部追加上原来已经上传的部分呀 IdFTP1.Put(name, ExtractFileName(name),true);IdFTP1.Put 方法上传怎样指定需要续传部分的大小,续传怎么老是整个文件全部追加上原来已经上传的部分呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 该函数实现的功能就是如此,当最后一个参数为true时,若存在同名文件则将上传的文件追加到已存在的文件。若想实现续传的功能可以自己计算需要续传的部分,提取该部分,使用TIdFTP.Put(const ASource: TStream; const ADestFile: string = ''; const AAppend: boolean = false);上传 谢谢你的回答,不过TStream,这类我不大熟悉,能不能给一段示例代码,感激!!!! var AStream: TFileStream;begin AStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); IdFTP1.Put(AStream, ExtractFileName(FileName), True);end;以上是上传TStream的用法,但该方法只是将整个文件上传,若想实现续传的话就需要自己计算续传的部分进行上传。首先根据客户端文件大小和服务端同名文件大小的差来得到需要续传部分的大小,假定为TransferLength。然后定义AStream1:TMemoryStream来保存需要上传部分。AStream1 := TMemoryStream.Create;AStream1.CopyFrom(AStream, TransferLength); //从AStream得到需要上传部分最后进行上传IdFTP1.Put(AStream1, ExtractFileName(FileName), True);大概代码如下:var AStream: TFileStream; AStream1:TMemoryStream; TransferLength: LongWord;begin AStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); AStream1 := TMemoryStream.Create; try TransferLength := AStream.Size - 服务端同名文件大小; AStream.Seek(服务端同名文件大小, soFromBeginning); AStream1.CopyFrom(AStream, TransferLength ); IdFTP1.Put(AStream1, ExtractFileName(FileName), True); finally FreeAndNil(AStream); FreeAndNil(AStream1); end;end;不知你需要上传的文件一般多大?是否非要续传功能,由于上传的来源一般不确定,有可能导致产生错误的文件。 谢谢hahafan...还有个问题请帮帮忙:http://community.csdn.net/Expert/topic/4657/4657020.xml?temp=.2249262 窗体继承问题 请问在delphi中怎么写类? 简单问题!! 想做一个股票网络数据接收程序,但不知从何处下手,请各位大虾指教! 请问关闭ScktSrvr.exe,怎么写? delphi xe 价格 哪儿有下载ERDAS 2010版 关于Delphi7的问题 为什么我的问题总是没人回答呢?这次我再问问吧!! 多个bpl 如何打包成一个BPL 让EXE只调用一个bpl 请教按角度绘直线的问题 如何由窗口 句柄得到 可执行文件的路径?
若想实现续传的功能可以自己计算需要续传的部分,提取该部分,使用TIdFTP.Put(const ASource: TStream; const ADestFile: string = '';
const AAppend: boolean = false);上传
TStream,这类我不大熟悉,能不能给一段示例代码,感激!!!!
AStream: TFileStream;
begin
AStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
IdFTP1.Put(AStream, ExtractFileName(FileName), True);
end;
以上是上传TStream的用法,但该方法只是将整个文件上传,若想实现续传的话就需要自己计算续传的部分进行上传。
首先根据客户端文件大小和服务端同名文件大小的差来得到需要续传部分的大小,假定为TransferLength。
然后定义AStream1:TMemoryStream来保存需要上传部分。
AStream1 := TMemoryStream.Create;
AStream1.CopyFrom(AStream, TransferLength); //从AStream得到需要上传部分
最后进行上传
IdFTP1.Put(AStream1, ExtractFileName(FileName), True);
大概代码如下:
var
AStream: TFileStream;
AStream1:TMemoryStream;
TransferLength: LongWord;
begin
AStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
AStream1 := TMemoryStream.Create;
try
TransferLength := AStream.Size - 服务端同名文件大小;
AStream.Seek(服务端同名文件大小, soFromBeginning);
AStream1.CopyFrom(AStream, TransferLength );
IdFTP1.Put(AStream1, ExtractFileName(FileName), True);
finally
FreeAndNil(AStream);
FreeAndNil(AStream1);
end;
end;不知你需要上传的文件一般多大?是否非要续传功能,由于上传的来源一般不确定,有可能导致产生错误的文件。
还有个问题请帮帮忙:
http://community.csdn.net/Expert/topic/4657/4657020.xml?temp=.2249262