IdFTP1.Connect(true);
resumepoint:=IdFTP1.Size(fname); //得到FTP服务器上文件的大小
fileStream := TFileStream.Create(path, fmOpenRead);
fileStream.Seek(resumepoint,soFromBeginning);//跳到断点的地方,结果显示这一步似乎没有作用
IdFTP1.Quote('REST '+floattostr(resumepoint));
IdFTP1.put(fileStream,fname,false); //上传文件
fileStream.Free;
IdFTP1.Disconnect();
每次上传后都会在原来已上传的文件中累加,而不是从断点的地方续传,请问这个代码应该如何改?
resumepoint:=IdFTP1.Size(fname); //得到FTP服务器上文件的大小
fileStream := TFileStream.Create(path, fmOpenRead);
fileStream.Seek(resumepoint,soFromBeginning);//跳到断点的地方,结果显示这一步似乎没有作用
IdFTP1.Quote('REST '+floattostr(resumepoint));
IdFTP1.put(fileStream,fname,false); //上传文件
fileStream.Free;
IdFTP1.Disconnect();
每次上传后都会在原来已上传的文件中累加,而不是从断点的地方续传,请问这个代码应该如何改?
fileStream:TFileStream;
MyStream: TMemoryStream;
buf:array[0..4096] of byte;
s:integer;
begin
IdFTP1.Connect(true);
resumepoint:=IdFTP1.Size(fname);
fileStream := TFileStream.Create(path, fmOpenRead);
fileStream.Seek(resumepoint,soFromBeginning); MyStream:=TMemoryStream.Create;
while fileStream.Position<>fileStream.Size do
begin
s:=fileStream.Read(buf,sizeof(buf));
MyStream.Write(buf,s);
end;
fileStream.Free; IdFTP1.Quote('REST '+floattostr(resumepoint));
IdFTP1.put(MyStream,fname,false);
MyStream.Free;
IdFTP1.Disconnect();
end 这样可以实现断点续传,但是问题是:当上传的文件很大,开始上传前的等待时间让人无法忍受,请问还有没有其他的办法实现?
用内存流的
直接使用FileStream,修改方法在以前的贴中我已经说的了,直接修改IdFTP中InternalPut过程
找找看吧_____________________
http://lysoft.7u7.net
http://community.csdn.net/Expert/topic/4207/4207138.xml?temp=.4353449这里给的答案好象是不行