在我的应用程序中,我的用户可以将文件 (pdf/xls/doc) 导入表或将它们导出到文件夹。现在我想直接打开这些文件。
到目前为止,我能够: - 获得一个唯一的名称 - 将 blob 文件保存到生成的文件中 - 打开它
问题是我不知道如何删除(或更新)文件,之后文件将被用户关闭。
如果有人可以帮助我,我会很高兴:)
这是我的代码的快照:
procedure OpenTemporaryFile(AFileExtension: String; AKey: Integer;
AMyConnection: TMyConnection);
Var
qrDocuments : TMyQuery ;
TmpName,ExtName: string;
TempFileName: TFileStream;
begin
//Generate an unique tmp file located into user temp folder
TmpName:= FileGetTempName('~SI');
ExtName:= ChangeFileExt(TmpName, AFileExtension);
//Change files extension so that Shellexecute will be able to open the file
RenameFile(TmpName,ExtName );
//Creating the FileStream (data is fetched from an blob field)
TempFileName := TFileStream.Create(ExtName, fmOpenReadWrite );
qrDocuments := TMyQuery.create(nil);
try
qrDocuments.Connection := AMyConnection;
qrDocuments.Close;
qrDocuments.SQL.Clear;
qrDocuments.SQL.Text:='Select Id,FileName,Data from files where Id = :prId And Data IS NOT NULL';
qrDocuments.ParamByName('prId').AsInteger := AKey;
qrDocuments.open;
TBlobField(qrDocuments.FieldByName('Data')).SaveToStream(TempFileName);
finally
TempFileName.Free;
qrDocuments.free;
end;
ShellExecute(Application.Handle, 'open', Pchar(ExtName), '', '', SW_SHOWNORMAL);
DeleteFile( ExtName);
end;