使用 Delphi XE2 将 oracle blob 加载到内存中并使用默认应用程序打开
Load oracle blob into memory with Delphi XE2 and open with default application
我想知道是否有人可以帮助我解决以下问题。
我已将几千个文件(MSG、PDF、DOC、DOCX、XLS、XLSX 等)上传到我们的 Oracle 数据库中,因为我们需要开始将文件保存到数据库中。
我想知道是否可以基本上从数据库中打开选定的文件到内存中,然后继续使用默认应用程序打开文件,而不必每次都将文件保存到本地磁盘。
这意味着如果用户选择查看 PDF 文档,它应该用 Adobe 打开 Reader,Word 文档应该用 Word 打开,MSG 文件应该用 Outlook 打开,等等。
我已经在互联网上进行了搜索,但未能找到对解决此问题有帮助的信息。
好的
我已经找到了一个完美的解决方案。
我只需要将 '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,所有文件都使用默认程序打开。
我想知道是否有人可以帮助我解决以下问题。
我已将几千个文件(MSG、PDF、DOC、DOCX、XLS、XLSX 等)上传到我们的 Oracle 数据库中,因为我们需要开始将文件保存到数据库中。
我想知道是否可以基本上从数据库中打开选定的文件到内存中,然后继续使用默认应用程序打开文件,而不必每次都将文件保存到本地磁盘。
这意味着如果用户选择查看 PDF 文档,它应该用 Adobe 打开 Reader,Word 文档应该用 Word 打开,MSG 文件应该用 Outlook 打开,等等。
我已经在互联网上进行了搜索,但未能找到对解决此问题有帮助的信息。
好的
我已经找到了一个完美的解决方案。
我只需要将 '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,所有文件都使用默认程序打开。