Oracle下图像的存取
在Oracle+Delphi6下,如何实现图像的存取,包括图像字段定义的类型,是BLOB还是BFILE?存取图像的大小有限度吗?存取图像的方式,是以数据流的方式还是其他方式?图像是存在数据库里还是存在数据库之外的服务器机器里?图像的类型,包括BMP和JPEG,如果能提供我详细的源代码,那是最好不过了,请大家尽情讨论,大大帮助,小女子不胜感激。
问题点数:100、回复次数:6Top
1 楼dacong(大聪)回复于 2005-05-30 22:36:25 得分 0
你BLOB,可以存4G的文件,
可以用bde和AdoTop
2 楼dacong(大聪)回复于 2005-05-30 22:39:25 得分 100
//bde
procedure Tfrm_XTDZDDYXX.mn_openpClick(Sender: TObject);
var ms:tmemorystream;
begin
opendialog1.Filter:='All (*.'+wjhz0+')|*.'+wjhz0;
if image1.Visible then
begin
if opendialog1.Execute then
begin
try
ms:=tmemorystream.Create;
ms.LoadFromfile(opendialog1.FileName);
sub_Table.Edit;
sub_TableNR.LoadFromStream(ms);
showimage;
finally
ms.Free;
end;
end;
end;
end;
//ado
procedure Tfrm_XTDZDDYXX.mn_openpClick(Sender: TObject);
var ms:tmemorystream;
begin
if sub_table.RecordCount<=0 then exit;
//opendialog1.Filter:='All (*.'+wjhz0+')|*.'+wjhz0;
if opendialog1.Execute then
begin
if (getfilesize(opendialog1.FileName)/(1024*1024))>=8.0 then
begin
messagebox(handle,pchar('文件大小不能超过8M,请选择其它的文件!'),'错误信息-文件太大',mb_iconerror);
exit;
end;
try
ms:=tmemorystream.Create;
ms.LoadFromfile(opendialog1.FileName);
sub_Table.Edit;
(sub_Table.FieldByName('nr') as tblobfield).LoadFromStream(ms);
wjhz0:=uppercase(ExtractFileExt(opendialog1.FileName));
delete(wjhz0,1,1);
sub_table.FieldByName('wjhzmc').AsString:=wjhz0;
sub_Table.post;
if image1.Visible then
begin
showimage;
end
else
begin
OleContainer1.DestroyObject;
OleContainer1.CreateObjectFromFile(opendialog1.FileName,false);
OleContainer1.run;
OleContainer1.Visible:=true;
end;
finally
ms.Free;
end;
end;
end;
Top
3 楼yxctxg(猪猪)回复于 2005-05-31 08:37:57 得分 0
dacong(大聪),非常感谢,我试一下。Top
4 楼yxctxg(猪猪)回复于 2005-05-31 09:02:22 得分 0
dacong(大聪),opendialog1.Filter:='All (*.'+wjhz0+')|*.'+wjhz0; 后面是什么意思呀,这样是把图像存在服务器里吧,不是数据库里,这样是不是更好一些。还有这样是不是不用区分图像格式,不论BMP还是JPEG,还有就是要不要修改数据库里blobsize的值,系统默认是32KTop
5 楼dacong(大聪)回复于 2005-05-31 23:05:29 得分 0
opendialog1.Filter:='All (*.'+wjhz0+')|*.'+wjhz0
是对话框,过滤用的,没什么用
BDE要改blobsize
别的代码你不用看,只看怎么操作流就行了Top
6 楼yxctxg(猪猪)回复于 2005-06-01 19:07:04 得分 0
好的,我再试一下,多谢!Top




