我感到头痛的问题,还必须解决!!,大家来看看吧 文件可以以FTP方式存储在服务器上,通过FTP上传和下传 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样的问题我遇到过。可以用JPEF,GIF,直接保存到数据库中,Delphi对JPEG有支持,GIF用最优秀的Gif组件TGifImage(www.jedi.com)来处理。用TBlobStream 直接存到数据库?可是只能存bmp呀 数据类型用Text,应该都可以吧? 我用下面的方法存不进去graphic1:=Tgraphic.Create;graphic1.LoadFromFile(openpicturedialog1.filename);table1.Edit;table1.FieldByName('picture').assign(graphic1);table1.post;// 出错graphic1.free; 当然出错,你要指定它为BLOB型的,一般这样用:TBlobField( table1.FieldByName( 'picture' ) ).LoadFromFile( OpenPictureDialog1.FileName );或者用TBlobStream,不过不如这个好用,看看帮助吧。 to Raptor(猛禽) 我用了你的方法,可是当我存一个*.ico文件时 出错:bitmap image is not valid 而且如果图象过大 还会出这样的错误: invalid blob length 做一个上传组件(流文件),上传到SERVER不就行了,再在数据库里记下他的路径和文件名。 看你的意思,是不是你的数据库用的是Paradox?Paradox中有一种Graphic字段专存Bitmap。可能你需要改一下字段类型(OLE)。至于Blob的大小,如果你用Post方式保存的话,应该不能超过32K,BDE中设置的。你可以用下列方法:var Query1: TQuery;// 略去了创建过程Query1.SQL.Text := 'update people set photo=:photo where id='+ID;Query1.Params[0].LoadFromFile( sFileName, ftBlob ); // 注意ftBlob可能要换成其它的值Query1.ExecSQL; 不是 是access,以后很可能 会移植到sql server 我用了 下面的 方法 可以将 图片存到库里是通过ado连接的,但是如果是用Ttable或Tquery 受长度限制!!!!procedure TForm1.Button1Click(Sender: TObject);varbitmap:Tbitmap;begin if openpicturedialog1.Execute then image1.picture.loadfromfile(openpicturedialog1.filename);Bitmap:=TBitmap.create; Bitmap.Height:=image1.Picture.height; Bitmap.Width :=image1.Picture.Width; //Icono.Width; Bitmap.Canvas.Draw(0, 0,image1.Picture.Graphic);adotable1.Edit; TBlobField( adotable1.FieldByName( 'picture' ) ).assign(BITMAP); adotable1.post;bitmap.freeend; 对单机版可以但是 对 server +pc 就 很麻烦 在Sql Server 中可以使用Image类型字段存放图片流。将图片文件转成流,并在流的前面加上几位(比如3位)标识图片类型(如bmp,ico,jpg等)后,存入数据库。在显示图片时,先将图片流取出,读出前三位判断其图片类型,再用相应图片变量(TBitmap,TICon等)存储剩余的流并将之显示即可。如果需要我可以给你提供例子。 to ameng007(阿门) 好呀,太谢谢你了[email protected] TDictionary 泛型如何排序?????? 关于用钩子截获 $1E2 这个消息?? cxGrid的问题 怎么往注册表中写Dword类型的数据 哪位大侠施舍一下:dephi7.0的serial Number 和 Authorization Number 小妹不甚感激! 谁能提供仿系统托盘思路? 想问高手如何用vfp调用DELPHI编写的DLL? 请问如何在画片上加上透明文字? 急求关于DxBarItemCtrl的问题 怎样取得打印机名? 请问:这是怎么回事? 多层高手请看:李维的书上在讨论开发三层的应用服务器效率时讲到两个名词:DCOM应用服务器和Socket应用服务器,这个说法对吗?
可是只能存bmp呀
graphic1:=Tgraphic.Create;graphic1.LoadFromFile(openpicturedialog1.filename);
table1.Edit;
table1.FieldByName('picture').assign(graphic1);
table1.post;// 出错
graphic1.free;
TBlobField( table1.FieldByName( 'picture' ) ).LoadFromFile( OpenPictureDialog1.FileName );
或者用TBlobStream,不过不如这个好用,看看帮助吧。
我用了你的方法,可是当我存一个*.ico文件时 出错:bitmap image is not valid
至于Blob的大小,如果你用Post方式保存的话,应该不能超过32K,BDE中设置的。你可以用下列方法:
var Query1: TQuery;
// 略去了创建过程
Query1.SQL.Text := 'update people set photo=:photo where id='+ID;
Query1.Params[0].LoadFromFile( sFileName, ftBlob ); // 注意ftBlob可能要换成其它的值
Query1.ExecSQL;
是通过ado连接的,但是如果是用Ttable或Tquery 受长度限制!!!!procedure TForm1.Button1Click(Sender: TObject);
varbitmap:Tbitmap;begin
if openpicturedialog1.Execute then
image1.picture.loadfromfile(openpicturedialog1.filename);Bitmap:=TBitmap.create;
Bitmap.Height:=image1.Picture.height;
Bitmap.Width :=image1.Picture.Width; //Icono.Width;
Bitmap.Canvas.Draw(0, 0,image1.Picture.Graphic);adotable1.Edit;
TBlobField( adotable1.FieldByName( 'picture' ) ).assign(BITMAP);
adotable1.post;bitmap.freeend;