有关如何把数据库中保存的文件直接在程序中打开的问题 ( 积分: 60 )

  • 主题发起人 主题发起人 liuzg790313
  • 开始时间 开始时间
L

liuzg790313

Unregistered / Unconfirmed
GUEST, unregistred user!
我把文件直接存储到数据库中,然后用户需要打文件时需要把它下载到本地硬盘,然后再打开,
能否直接在程序中打开,文件如word文档、autoCAD制图文件等。

//将文件存到数据库中
function blobcontenttostring(const filename: string):string;
begin
with tfilestream.create(filename,fmopenread) do
try
setlength(Result,size);
read(Pointer(Result)^,size);
finally
free;
end;
end;
//保存字段
begin
if (opendialog1.execute) then
begin
sFileName:=OpenDialog1.FileName;
adotable1.edit;
adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(FileName);
adotable1.post;
end;

//将文件保存到本地
procedure TForm2.Button3Click(Sender: TObject);
var
sfilename:string;
begin
savedialog1.Filter:='Word文档 (*.doc)|*.DOC|所有文件(*.*)|*.*|';
if savedialog1.Execute then
TBlobField(adoquery1.FieldByName('wenjian')).SaveToFile(savedialog1.FileName);
end;


能否在程序中直接打开数据库中的文件, 而不是把文件下载到本地,再利用olecontainer打开
 
我把文件直接存储到数据库中,然后用户需要打文件时需要把它下载到本地硬盘,然后再打开,
能否直接在程序中打开,文件如word文档、autoCAD制图文件等。

//将文件存到数据库中
function blobcontenttostring(const filename: string):string;
begin
with tfilestream.create(filename,fmopenread) do
try
setlength(Result,size);
read(Pointer(Result)^,size);
finally
free;
end;
end;
//保存字段
begin
if (opendialog1.execute) then
begin
sFileName:=OpenDialog1.FileName;
adotable1.edit;
adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(FileName);
adotable1.post;
end;

//将文件保存到本地
procedure TForm2.Button3Click(Sender: TObject);
var
sfilename:string;
begin
savedialog1.Filter:='Word文档 (*.doc)|*.DOC|所有文件(*.*)|*.*|';
if savedialog1.Execute then
TBlobField(adoquery1.FieldByName('wenjian')).SaveToFile(savedialog1.FileName);
end;


能否在程序中直接打开数据库中的文件, 而不是把文件下载到本地,再利用olecontainer打开
 
后退
顶部