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();  
 
每次上传后都会在原来已上传的文件中累加,而不是从断点的地方续传,请问这个代码应该如何改?

解决方案 »

  1.   

    我后来修改的代码:var  
       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 这样可以实现断点续传,但是问题是:当上传的文件很大,开始上传前的等待时间让人无法忍受,请问还有没有其他的办法实现?
      

  2.   

    当然
    用内存流的
    直接使用FileStream,修改方法在以前的贴中我已经说的了,直接修改IdFTP中InternalPut过程
    找找看吧_____________________
    http://lysoft.7u7.net
      

  3.   

    你说的是不是这个帖子?
    http://community.csdn.net/Expert/topic/4207/4207138.xml?temp=.4353449这里给的答案好象是不行
      

  4.   

    我现在希望的是能够得到具体的解决方法,比如如何修改IdFTP中InternalPut过程
      

  5.   

    自己搞定了,InternalPut不用修改,只需修改PUT就行了