中易网

数据库如何存储图片

答案:5  悬赏:60  
解决时间 2021-10-19 00:41
数据库如何存储图片
最佳答案
你只需把你的数据库表里准备存储照片的字段数据类型设置为image就可存储照片了
全部回答
设置文件夹,上传就行了啊  
问题: 数据库与照片/图片/文件的关系如何处理? 也就是,比如有照片若干,怎样能在数据库中存储并显示?   方法一: 把照片放进数据库,照片的格式最好是bmp,这样就可以在窗体上显示出来,不过这样数据库的体积会暴增。 详细的使用方法请参考Access帮助中的 PictureData 属性(本文末尾有相关帮助)。 而且,你可以直接用 commdlg API 函数来给图像框赋值,然后直接读取某个图像框的 PICTUREDATA 并存储到某个 IMAGE 字段中。这样做的优点是显示、读取方便,缺点是如果图片精度高,占用的硬盘空间会爆大。 详细示例请参考: http://access911.net/down/eg/OLEfieldAndPictureData.rar (46KB)     方法二:  设一个OLE字段,然后插入对象就行了(对着字段单击右键)。但是要注意的是,用上述方法加入数据库的图片只能以手动方式保存,需要用程序读取的时候会碰到存储在ole字段中二进制数据与源文件不符的情况。主要是因为ole引擎在图片的前面加了一段信息给他自己用。 请参考: http://access911.net/index.asp?board=4&mode=3&recordid=75FAB21E12DC     方法三:  将图片文件以二进制方式存储在数据库中,使用时调用。详细情况请参考: 使用 ADO 的 STREAM 对象的 LoadFromFile 方法以及 SaveToFile 方法实现: http://access911.net/index.asp?board=4&mode=3&recordid=74FAB51E13DC 使用 ADO 的 RECORDSET.FIELD 对象的 GetChunk 以及 AppendChunk 方法实现: http://access911.net/index.asp?board=4&mode=3&recordid=75FAB01E ASP 中使用的方法: http://access911.net/index.asp?board=4&mode=3&recordid=79FAB31E 下列例程就是采用这种方法,在显示的时候把长二进制数据保存为临时文件用于显示 http://access911.net/down/photo.rar (size=308K)     方法四:  不把照片放入数据库,只把照片的路径保存到数据库中,动态加载,这样可以支持很多种图片格式。作法是在窗体上放一个图像控件,然后根据员工编号或别的有关联的字段去找出路径,用以下语句来加载图像: 图像1.Picture =路径名 路径名必须包括图象文件名。 详细情况你可以参考 access xp 的示例 northwind.mdb 中的雇员窗体 你也可以参考:http://access911.net/down/eg/LinkPicture.rar (61.1KB)     方法五:    在 ACCESS 2007 文件格式中,可以直接将图片存储到“附件”的字段中。 附件类型与OLE类型的主要几个区别是: “附件”字段不用创建原始文件的位图图像; 附件支持自动压缩一些格式的文件; 不是所有文件都能存储到附件字段中,比如EXE就不行。 操作方法除了手动,可以用 DAO的Recordset.Fields("FileData").LoadFromFile(<filename>) SaveToFile 来实现。     以下是 PictureData 的参考::     PictureData 属性 请参阅 应用于 示例 特性 使用 PictureData 属性可以将窗体、报表或控件中的图片复制到另一个支持 Picture 属性的对象中。Variant 型,可读写。 expression.PictureData expression   必需。返回“Applies To”列表中的一个对象的表达式。 说明 PictureData 属性设置值可以是其他图像控件、命令按钮、切换按钮、窗体或报表的 PictureData 属性。 使用 Visual Basic 可以对该属性进行设置。 使用该属性可以根据用户所执行的操作的不同,在窗体中显示不同的背景图片。例如,可以根据“客户”窗体打开的目的是输入数据还是浏览数据而在打开窗体时使用不同的背景图片。 另外,将 PictureData 属性、Timer 事件和 TimerInterval 属性一起使用,可以在窗体中产生简单的动态背景效果。 示例 下面的示例使用三个图像控件实现一只蝴蝶从窗体中飞过的动态效果。Hidden1 图像控件包含的图片是一只双翅向上的蝴蝶,Hidden2 图像控件包含的图片也是一只蝴蝶,不过这只蝴蝶的双翅是向下的。这两个控件的 Visible 属性都设为 False。TimerInterval 属性设为 200。每次发生 Timer 事件时,就通过使用隐藏图像控件的 PictureData 属性更改 Visible1 图像控件中的图片,并且可见图像控件向右移动 200 缇。当可见图像控件的 Left 属性值大于公用变量 gfrmWidth 中存储的窗体宽度时,可见图像控件即重新移回窗体的左边。gfrmWidth 变量值在窗体的 Open 事件中设为 Me.Width。 Private Sub Form_Timer()     Static intPic As Integer     Select Case intPic         Case Is = 1             Me!Visible1.PictureData = Me!Hidden1.PictureData         Case Is = 2             Me!Visible1.PictureData = Me!Hidden2.PictureData         Case Else     End Select     If intPic = 2 Then intPic = 0     intPic = intPic + 1     If (Me!Visible1.Left > gfrmWidth) Then Me!Visible1.Left = 0     Me!Visible1.Left = Me!Visible1.Left + 200 End Sub  
一个是添加图片的页面,还有一个显示图片的页面。 由于篇幅原因,我就给你写出ASP的代码了。 你还应该添加一个字段,就是图片名字。(我这就用picname了) 添加图片的页面:名字就用这个吧,也可以改。(addpic.asp) ----------------------------------------------------- <% if request.QueryString("action")="save" then set rs=server.CreateObject("adodb.recordset") rs.open "select * from pic",conn,1,3 rs.addnew rs("picname")=trim(request("picname")) rs("picpath")=trim(request("picpath")) rs.update rs.close set rs=nothing response.write "<script language=javascript>alert('添加成功!');location.replace('addpic.asp');</script>" response.End end if %> -----------------------------------放在本页<html>的上面。 这个页面的body区域还要添加一个表单, <form name="form1" method="post" action="?action=save">建立好的表格及输入框等</form> 上面是添加完成后跳转到本页,想跳到显示图片页,就把“addpic.asp”改成“showpic.asp”就可以了。还有本页要添加的两个输入框的名字分别要用picname和picpath哦。 下面是显示图片的页面(就用showpic.asp了): <% set rs=server.CreateObject("adodb.recordset") rs.open "select * from pic order by id desc",conn,1,1 %> ---------------------------------------这段代码也是放<html>上面的 图片编号:<%=rs("id")%> 图片名称:<%=rs("picname")%> 图片显示<img src="<%=picpath%>" title="<%=rs(picname)%>" border="0" > ---------------------------------------放body区域 <% rs.close set rs=nothing conn.close set conn=nothing %> ---------------------------------------就放</body>这行上面就可以了。 本页的body区域你可以自己再设计下,然后放这些代码就可以了。 还有连接数据库的代码,你新建一个文本文档,然后把以下代码拷进去, <% dim conn dim connstr dim db db="mdb/pic.mdb" Set conn = Server.CreateObject("ADODB.Connection") connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db) conn.Open connstr %> 然后另存为conn.asp,放根目录就可以。然后每个要显示图片的动态页面的<html>上面放入 <!--#include file="conn.asp"--> 这段代码就可以了。
你是用C/S模式还是B/S模式 C/S的话以二进制的方式存比较好。 B/S的话一般存路径。 路径是从程序的所在目录开始的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
各位说下适合老年人运动健身器材有哪些?
刀郎的歌曲《喀什噶尔胡杨》表达了什么样的思
福州婚宴报价愤怒的小鸟主题婚礼怎么策划?
杭州厂房装修价格是多少
请问预订国外的飞机票需要在预订的时候就提供
延吉哪有高温瑜伽
女人没有性要求
梅陇驾校 双柏路分部怎么样
谁知道有没有从邢台到曲周的长途客车?
人工受精要做几次才能怀上呢?难不难做的呀?
贵阳市三桥批发市场卖的是什么
河津那里能招聘到会裁缝的师傅啊?
在南京哪里能买到海贼王里人物的衣服
有谁知道潮州三环要上市吗?
西南交通大学(成都郫县的那个一本院校)收分
推荐资讯
全口牙缺失怎么办?
山东省淄博市淄川区的邮政编码多少?
明日星幼儿园(柳州柳城县)地址有知道的么?有
天津市哪有宠物(爬虫两栖类)市场啊
约克中央空调市场报价可以下调多少
联华文具和漂亮的本本~
哪位了解老式床价格
普兰店到沈阳北列车时刻和票价
过年的时候舅妈会从美国回来过年,想让他带个
为什么牛肉可以用食粉腌制,而鸡肉和猪肉就不
哪里有靠谱的足疗加盟?介绍下
装饰装修合同(包工包料)如何缴纳印花税
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?