标题:如何将图片从数据库中导出?
只看楼主
loach
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-3-1
 问题点数:0 回复次数:8 
如何将图片从数据库中导出?
在SQL或者ACEESS数据库中,如何将图片(二进制)数据导出成本地图片,多谢了
搜索更多相关主题的帖子: 数据库 
2005-04-01 17:47
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 
太简单了。。

天津网站建设 http://www./
2005-04-01 21:19
loach
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-3-1
得分:0 
以下是引用griefforyou在2005-4-1 21:19:39的发言: 太简单了。。
兄弟,给个答案啊

2005-04-04 10:34
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
我之前写过这样的例子,我找一下再说。
2005-04-04 12:41
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
先得把图片从数据库里读出来才能打印 从数据库读取图片的vb代码 Dim PicFile As String '声明图片路径变量 Dim byt() As Byte '声明二进制数组接收数据库信息 Dim lngch As Long'得到文件号 PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg" '给该变量符值用图书书号作文件名创建一个图片文件 ReDim byt(rs.Fields(7).ActualSize) 'ActualSize指示字段的值的实际长度 byt = rs.Fields(7).Value '得到数据库图片信息 lngch = FreeFile '取得空闲的文件号 '将二进制数组byt符值给PicFile的文件 Open PicFile For Binary As #lngch Put #lngch, , byt Close #lngch Image1.Picture = LoadPicture(PicFile) 这个程序的原理就是先写一个路径出来 PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg" 这句话就是先写出一个文件的路径和名称,这个文件现在并不真实存在。而众所周知图片是二进制数据,这个文件会的作用就是存储二进制数据。 Dim byt() As Byte '声明二进制数组接收数据库信息 这里声明就是因为图片在数据库中是以二进制数组存在的,读取出来存储的变量也得是二进制数组。 ReDim byt(rs.Fields(7).ActualSize) 这个语句2个意思一个就是用rs是记录集对象Fields(7)是对应数据库的第7个字段(第7列)例子里数据库的第7个字段是存放图片的字段。用ActualSize属性可以得到当前行这个字段的长度(也就是能得到二进制数组的维数)Redim作用就不用说了吧。 byt = rs.Fields(7).Value '得到数据库图片信息 解释的很清楚把数据库信息符给声明的二进制数组。 lngch = FreeFile '取得空闲的文件号 '将二进制数组byt符值给PicFile的文件 Open PicFile For Binary As #lngch Put #lngch, , byt Close #lngch Image1.Picture = LoadPicture(PicFile) 取得空闲文件号惯用做法不解释了 几个带颜色的要点就是PicFile为刚才造出来的那个并不存在的文件路径,#lngch为文件号必须不解释了。 Put #lngch, , byt 这句话的意思就是把二进制数组写进造出来的那个文件里。 最后别忘了关闭#lngch文件号,不解释了照着写就可以。 关闭后这时刚才造出来的那个文件就已经存储了数据库里图片的二进制信息,这样那个造出来的文件这时已经真实存在了(也就是可以在硬盘里找到它了)。然后 Image1.Picture = LoadPicture(PicFile)这句话中image1为image控件用此方法, 数据库中的图片就显示在image控建里了。如果把这个做成函数参数就需要rs的数据库记录集对象一个(之前已经打开的),PicFile图片路径一个(最好Byref PicFile传引用)。Image1.Picture = LoadPicture(PicFile)这句话可以去掉。 这个是我原来写的,省着再写了。太多了。
2005-04-04 12:44
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
这个例子是VB的例子,ASP应该也能用吧?把得到的图片路径直接用Response.Write("<img Src="&PicFile&"></img>")的方法应该能显示出来,不过需要对路径进行改造之前得求出虚拟路径和物理路径。
2005-04-04 12:51
loach
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-3-1
得分:0 
谢谢yms123兄,就是偶比较笨,还是不知道怎么做,不懂VB啊

2005-04-05 11:37
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
Image1.Picture = LoadPicture(PicFile) PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg" 改造上面的代码变成ASP能用的关键是这两句话。 PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg" 这句话是指定从数据库中导出的图片的真实路径,而ASP中好像不能这么写。 首先先得指定图片的虚拟路径以Http://xxx/xx.jpg 的形势来指定虚拟路径也就是说 PicFile="Http://xxx/xx/jpg" 这么写,注意的是这个Http://xxx/xx.jpg 是网页所在服务器的虚拟路径。 然后用 PicFile=Server.MapPath(PicFile) 的方法得出服务器的物理路径以C:\xxx\xxx.jpg为形式的路径。 接着就按照例子中的方法写入即可,接着例子中的最后一句话 Image1.Picture = LoadPicture(PicFile) 可以改为Response.Write("<img src=Http://xxx/xx/jpg></img>") 在写回客户端显示图片这里的Http://xxx/xx/jpg这个路径是与第一次指定的虚拟路径一样,因为这样简单不用再次改造路径了。
2005-04-05 12:22
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
得分:0 
我以前一直已为图片上传到某个文件夹,在数据库里记地址,真是肤浅。

2005-04-05 12:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-14584-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052143 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved