最近在用Delphi做一个断点上传的东西,可是我查了好多网上的资断,也按照方法写了,可是很奇怪,比如一个100mb的文件,我上传50mb,结果我断开后,再传完,就成了150MB,我用了别的FTP客户端连接FTP服务器是可以断点的,说明服务端没有问题,可是客户端要怎么写呢
 if IdFTP.Connected then begin
            if OpenDialog.Execute then try
                LastTimeTransfer := IdFtp.Size(ExtractFileName(OpenDialog.FileName));
               // Memo1.Text :=FloatToStr(LastTimeTransfer);
               if(LastTimeTransfer <> -1) then
                  begin
                      LSourceStream := TFileStream.Create(ExtractFileName(OpenDialog.FileName), fmOpenRead);
                      LSourceStream.Seek(LastTimeTransfer,soFromBeginning);                      Memo1.Text := FloatToStr(LSourceStream.Position);
                      IdFtp.Put(LSourceStream, ExtractFileName(OpenDialog.FileName), true);
                  end
                else
                  begin
                       IdFTP.Put(OpenDialog.FileName, ExtractFileName(OpenDialog.FileName));
                  end;                finally
                end;
             end;
           end;
我是这么写的,请问大家应该怎么写才对呢,

解决方案 »

  1.   

    QQ群 DELPHI远程监控专家论坛本群专业讨论 计算机远程监控相关问题
    本群由原来近200人精简到目前几十人的精英,淘汰了若干无助群发展的人
    现在需要继续壮大本群,望有意者\高手\专家们加盟
    QQ群号:29489381务必注意:加入时请看群公告内容,否则将会取消成员资格
      

  2.   

    没啥的~Indy FTP自己的Bug,必要的修正后即可
      

  3.   

    IdFtp.Quote('REST '+floattostr(LastTimeTransfer));
    我加上这句了,也没有作用,我把IdFTP的组件,也改成STOR了在追加的方式上,
      

  4.   

    else
              begin
                LSourceStream := TFileStream.Create(ExtractFileName(OpenDialog.FileName),fmOpenRead or fmShareDenyNone); //创建文件流;
                MyStream := TMemoryStream.Create;
                LSourceStream.Seek(LastTimeTransfer, soFromBeginning); //将文件流指向最后一次上传的位置;
                while LSourceStream.Position <> LSourceStream.Size do
                begin
                  s := LSourceStream.Read(buf, sizeof(buf));
                  MyStream.Write(buf, s);
                end;
                IdFTP1.Quote('REST ' + floattostr(LastTimeTransfer)); //Quote('REST '+floattostr(resumepoint));
           
                  IdFTP1.Put(MyStream, FrmLogin.FileListName[FTimeout].Strings[number], true); //以文件流方式 APPE (追加续传)
                 end;
    你试下这样写,我写了个,可以上传好慢呀,有没有什么办法呀!