我用indy分片断点传文件,客户端每次发送32K,但是在服务器端接收之后,每次写入都将原来的覆盖了,如何解决?望高手不吝赐教!服务器端处理源码:
  If sCommand='StreamContent' Then
  Begin
    //接收文件大小
    sCommand:=AThread.Connection.ReadLn();
    TotalSize:=StrToInt(sCommand);    //当前大小
    fs:=TFileStream.Create('TestReceive.exe',fmOpenRead);
    NowSize:=fs.Size;
    fs.Free;
    lbRecord.Items.Add(IntToStr(NowSize) + '/' + sCommand);    //接收流
    fs:=TFileStream.Create('TestReceive.exe',fmOpenReadWrite);
    AThread.Connection.ReadStream(fs,Min(TotalSize-NowSize,AThread.Connection.RecvBufferSize),False);
//*******问题就出在上面这行,我换过打开方式为fmCreate,也不行******
    fs.Free;    //发送当前字节大小,如果已经完成,则发送FILEEND
    fs:=TFileStream.Create('TestReceive.exe',fmOpenRead);
    NowSize:=fs.Size;
    If NowSize>=TotalSize Then AThread.Connection.WriteLn('FILEEND') Else
    Begin
      AThread.Connection.WriteLn(IntToStr(NowSize));
    end;
    fs.Free;    //发送提示继续
    AThread.Connection.WriteLn('GOON');
  end;

解决方案 »

  1.   

    同问题发送在DELPHI的网络通信版,up者1分,解决者最少50分。
      

  2.   

    继续哼哼哈哈没有人来,我就来。哼哼哈哈。没有人来,我就来。哼哼哈哈。var
      CurrentFile: TFileStream ;
      NextFile: TFileStream;
      UpdateFile: File;
    begin
      //建立一个临时文件
      if FileExists('NextTestReceive.exe') then
      begin
        DeleteFile('NextTestReceive.exe');
        FileCreate('NextTestReceive.exe');
        AssignFile(UpdateFile,'NextTestReceive.exe');
        Rewrite(UpdateFile,1);
        CloseFile(UpdateFile);
      end;  CurrentFile := TFileStream.Create('TestReceive.exe',fmOpenwrite);
      CurrentFile.Seek(0,soFromEnd);  NextFile := TFileStream.Create('NextTestReceive.exe',fmOpenRead);
      AThread.Connection.ReadStream(NextFile, -1, True);//读
      NextFile.Seek(0, soFromBeginning);  CurrentFile.CopyFrom(NextFile, NextFile.Size); //追尾  CurrentFile.Free;
      NextFile.Free;
    end;
      

  3.   

    //建立一个临时文件
      if FileExists('NextTestReceive.exe') then
        DeleteFile('NextTestReceive.exe');    FileCreate('NextTestReceive.exe');
        AssignFile(UpdateFile,'NextTestReceive.exe');
        Rewrite(UpdateFile,1);
        CloseFile(UpdateFile);