如何将*.jpg格式的图片文件保存到数据库中

84175971 2003-06-06 05:31:11
如何将*.jpg格式的图片文件保存到数据库中。
...全文
97 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
84175971 2003-06-25
  • 打赏
  • 举报
回复
太好了,棒级了,多谢这位大哥。
OO_is_just_P 2003-06-23
  • 打赏
  • 举报
回复
ok
xiaoqlj 2003-06-23
  • 打赏
  • 举报
回复
我的方法可以把任何文件存入数据库中。
数据库:SQL Server。
procedure TForm1.Button1Click(Sender: TObject);
var
Fs:TFileStream;
tmp:TStream;
F:File of Byte;
size:Longint; //文件大小
time:string; //文件时间
begin
if opendialog1.Execute then
begin
AssignFile(F,opendialog1.FileName);
reset(F);
size:=Filesize(F);//获取文件大小。
time:=DatetimetoStr(FileDateToDateTime(FileAge(opendialog1.FileName)));//获取文件创建时间。
closefile(F); //关闭打开的文件。
Fs:=TFileStream.Create(pchar(opendialog1.FileName), fmOpenRead or fmShareDenyWrite);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from File_Tab');
adoquery1.Open;
adoquery1.Insert;
adoquery1.FieldByName('FileName').AsString:=ExtractFileName(opendialog1.FileName); //存储文件名称
adoquery1.FieldByName('FileKind').AsString:=ExtractFileExt(opendialog1.FileName); //存储文件扩展名。
adoquery1.FieldByName('FileSize').AsInteger:=size; //存储文件的大小。
adoquery1.FieldByName('FileTime').AsString:=time; //存储文件的创建时间。
adoquery1.FieldByName('SaveTime').AsDateTime:=now(); //该文件存入库的时间。
Tmp:=adoquery1.CreateBlobStream(adoquery1.FieldByName('FileContent'),bmReadWrite); //把整个文件以二进制的形式存入数据库。
Tmp.CopyFrom(fs, 0);
Tmp.free;
adoquery1.Post;
fs.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Fs:tmemorystream;
tmp:TStream;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from File_Tab');
adoquery1.Open;
adoquery1.First; //这里以保存第一条记录为例。
savedialog1.FileName:=adoquery1.FieldValues['FileName']; //以原文件的文件名进行保存。
if savedialog1.Execute then
begin
Fs :=tmemorystream.Create;
begin
Tmp:=adoquery1.CreateBlobStream(adoquery1.FieldByName('FileContent'), bmRead);
Fs.CopyFrom(Tmp,Tmp.Size);
if FileExists(savedialog1.FileName) then
begin
if application.MessageBox('该文件已存在,是否替换?','信息提示',MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdYes then
begin
fs.SaveToFile(pchar(savedialog1.FileName));
application.MessageBox('文件保存成功!','信息确认',MB_OK);
end
else
application.MessageBox('文件保存失败!','信息确认',MB_OK);
// messagedlg('您要继续运行吗?',mtconfirmation,[mbyes,mbno],0);
end
else
begin
fs.SaveToFile(pchar(savedialog1.FileName));
application.MessageBox('文件保存成功!','信息确认',MB_OK);
end;
tmp.free;
end;
fs.Free;
end;
adoquery1.close;
end;

注意:存入文件的那个字段类型为image。
jaunmai 2003-06-23
  • 打赏
  • 举报
回复
我支持 comanche(太可怕) 不要设字段类型为 Graphic 的說法,

只要記錄記下图片文件位置名稱就成了 如: C:\photo\123.jpg

圖片多大也沒問題的!!
84175971 2003-06-22
  • 打赏
  • 举报
回复
是SQL SERVER数据库
WWWWA 2003-06-11
  • 打赏
  • 举报
回复
什么数据库?
comanche 2003-06-11
  • 打赏
  • 举报
回复
不要设字段类型为 Graphic
jpyc 2003-06-11
  • 打赏
  • 举报
回复
上次给朋友发过一个,有BUG,现已修正
jpyc 2003-06-11
  • 打赏
  • 举报
回复
可以给你提供一个ACCSSE例子,需要请发消息
akoan 2003-06-10
  • 打赏
  • 举报
回复
up
84175971 2003-06-09
  • 打赏
  • 举报
回复
我试了几次都不能将*.jpg文件存入数据库,但*.bmp格式可以,请高手帮忙.
84175971 2003-06-07
  • 打赏
  • 举报
回复
感谢各位,我的调试还是没通过,让我再试一次。
97866 2003-06-06
  • 打赏
  • 举报
回复
Query1.FieldByName('JpgFileName').Assign(Image1.Picture);
hansion3406 2003-06-06
  • 打赏
  • 举报
回复
没我的份了..
流..具体的东西.请下一个大富翁离线..
linzhisong 2003-06-06
  • 打赏
  • 举报
回复
这个就可以
uses Jpeg;
procedure Tform1.Db_Addpic(sender:Tobject);
var
PicName,Ext:string;
JpegImage:TJpegImage;
begin
if openpicturedialog1.execute then
begin
DB_PIC.append;
PicName:=openpictureDialog1.Filename;
Ext:=ExtractFileExt(PicName);
if UpperCase(ExtName)='.BMP' then
begin
//直接存入数据库
end
else if (UpperCase(ExtName)='.JPG') or (UpperCase(ExtName)='.JPEG') then
begin
JPEgImage:=TJpegImage.create;
try
JpegImage.LoadfromFile(PicName);
DB_PIC.Picture.Graphic.Assign(JpegImage);
DB_Pic.Post;
Finally
JpegImage.free;
end;
end;
end;
end;

linzhisong 2003-06-06
  • 打赏
  • 举报
回复
var
Mem: TMemoryStream;
Jpg: TJpegImage;
begin
mem:=TMemoryStream.Create;
Jpg:=TJpegImage.Create;
TBlobField(query1.Fields[n]).SaveToStream(mem);
Jpg.LoadFromStream(mem);
image1.picture.Bitmap.Assign(Jpg);
mem.Free;
Jpg.Free;
end;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧