1.因项目需要,现需将客户端中的文件上传到服务器中后才作处理,用的是RemObjects SDK.2.检看其示例(关于上传文件到服务端),运行时出现问题,因为时间紧一时间未能发现其错误修正方法.3.现将其示例中的代码贴上,望路过的友人也好,长驻的友人也好,帮个帮修正一下.代码如下:{其示例中客户端上传文件的方法}function TUploadThread.GetUploadChunk(FileMemStream: TMemoryStream; aSize:
  Int64; const Sequence: Integer): Binary;
const
  Block: Integer = 65536;
var
  Position: Int64;
begin  Result := Binary.Create;
  Position := Block * (Sequence - 1);
  if Position <= aSize then begin
    FileMemStream.Position := Position;
    if Position + Block > aSize then
      Result.CopyFrom(FileMemStream, aSize - Position)
    else
      Result.CopyFrom(FileMemStream, Block);
  end;end;procedure TUploadThread.Runupload;
var
  FileMemStream: TMemoryStream;
  Chunk: Binary;
  Sequence: Int64;
  isfirst: Boolean;
begin
  fErrorText := '';
  fUploadOK := false;
  fChannelErrorscount := 0;
  fCurrentBytePos := 0;
  Sequence := 1;
  fTimeStarted := Now;
  FileMemStream := nil;
  isfirst := true;
  try    if FileExists(fFilename) then try
      FileMemStream := TMemoryStream.Create;      FileMemStream.LoadFromFile(fFileName);
      fFileName := ExtractFileName(fFileName);      fFileSize := FileMemStream.Size;      fInfoStr := DateTimetoStr(fTimeStarted) + ' ' +
        fFileName + ' ' +
        FloatToStrF(Filesize / 1024, fffixed, 15, 1) + ' KB';      if assigned(fOnStartUpload) then fOnStartUpload(Self);
      Chunk := GetUploadChunk(FileMemStream, fFileSize, Sequence);
      Inc(fCurrentBytePos, Chunk.Size);
      Inc(Sequence);
      try
        fFileService.uploadChunk(isfirst, fFileName, Chunk);
        FreeAndNil(Chunk);{-------------------------这里发生错误}
        isfirst := false;
        Chunk := GetUploadChunk(FileMemStream, fFileSize, Sequence);
        while Chunk.Size > 0 do begin          if Terminated then begin
            if assigned(fOnAbort) then fOnAbort(Self);
            exit;
          end;          fFileService.uploadChunk(isfirst, fFileName, Chunk);          Inc(fCurrentBytePos, Chunk.Size);
        FreeAndNil(Chunk);
          Inc(Sequence);
          if assigned(fOnProgress) then fOnProgress(Self);
          Chunk := GetUploadChunk(FileMemStream, fFileSize, Sequence);
        end;        fUploadOK := (FileSize = 0) or (FileSize = CurrentBytePos);
      finally
       FreeAndNil(Chunk);      end;
    finally
      FileMemStream.Free;
    end;  except
    on e: Exception do begin
      fErrorText := e.Message;
      if assigned(fOnError) then fOnError(Self);
    end;
  end;
end;{服务器端接收文件内容的方法}procedure TExtendedFileTransferService.uploadchunk(const isfirst: Boolean; const filename: Widestring; const filedata: Binary);
var
  NewFile: TFileStream;
  localfilename: Widestring;
begin
  localfilename := getFileDirectory + filename;
  if isfirst and Fileexists(localfilename) then DeleteFile(localfilename);
  if FileExists(localfilename) then
    NewFile := TFileStream.Create(localfilename, fmOpenReadWrite)
  else
    NewFile := TFileStream.Create(localfilename, fmCreate);
  try
    NewFile.Seek(0, soFromEnd);
    filedata.SaveToStream(NewFile);
  finally
    NewFile.Free;
  end;
end;