我正在使用 Tidtrivialftpserver 和 Tidtrivialftp 通过 LAN 传输文件。我尝试了示例代码并且工作正常,但是 Tidtrivialftpserver 刚刚开始写入文件,我想实现一个保存对话框,以便我可以将其保存在我想要的位置。我尝试了以下操作,但它在当前目录中写入了文件。我也不相信 serverWriteFile 中的这一行(AStream := FS),因为当我调试此代码时,Astream 给出了 nil 但它仍然写入文件。如何?
var
file1: string;
FS: tfilestream;
procedure TForm2.saveClick(Sender: TObject);
begin
if savedialog1.Execute then
begin
savedialog1.FileName:= file1;
FS := TFileStream.Create(FileName,
fmCreate or fmShareExclusive);
end;
end;
procedure TForm2.serverWriteFile(Sender: TObject; var FileName: string;
const PeerInfo: TPeerInfo; var GrantAccess: Boolean; var AStream: TStream;
var FreeStreamOnComplete: Boolean);
begin
try
Memo1.Lines.Add('started writing files...');
file1 := ExtractFileName(Filename);
{ Open file in WRITE ONLY mode }
// FS := TFileStream.Create(FileName,
// fmCreate or fmShareExclusive);
{ Copy all the data }
AStream := FS;
{ Set parameters }
FreeStreamOnComplete := True;
GrantAccess := True;
except
{ On errors, deny access }
GrantAccess := False;
if Assigned(FS) then
FreeAndNil(FS);
end;
end;