我想知道是否有人可以帮我解决以下问题。
我已经将几千个文件(MSG,PDF,DOC,DOCX,XLS,XLSX等)上传到我们的Oracle数据库中,因为我们需要开始将文件保存到数据库中。
我想知道是否可以基本上将所选文件从数据库打开到内存中,然后继续使用默认应用程序打开该文件,而不必每次都将文件保存到本地磁盘上。
这意味着如果用户选择查看PDF文档,则应使用Adobe Reader打开,Word文档应使用Word打开,MSG文件应使用Outlook打开等。
我在互联网上搜索过,但在尝试寻找帮助我解决此事的信息方面却没有成功。
答案 0 :(得分:0)
好
我设法找到了一个完美无缺的解决方案。
我只需要将'ShellAPI'添加到表单顶部的uses子句中,以便Delphi XE2识别'ShellExecute'命令。
以下是我的代码:
procedure Tdms_displayfiles_frm.download_btnClick(Sender: TObject);
var
blob: TStream;
filename : string;
begin
blob := dms_download_ods.CreateBlobStream(dms_download_ods.FieldByName('fil_file'), bmRead);
try
blob.Seek(0, soFromBeginning);
with TFileStream.Create('c:\Temp\' + dms_download_ods.FieldByName('fil_sequence').AsString + '_' + dms_download_ods.FieldByName('fil_filename').AsString, fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;
filename := 'c:\Temp\' + dms_download_ods.FieldByName('fil_sequence').AsString + '_' + dms_download_ods.FieldByName('fil_filename').AsString;
ShellExecute(0, nil, PChar(filename), nil, nil, SW_SHOWNORMAL);
end;
到目前为止,我尝试使用以下文件格式:PDF,MSG,DOC,DOCX,XLS和XLSX以及所有使用默认程序打开的文件。