怎样读取数据库中存储的二进制图片文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样读取数据库中存储的二进制图片文件相关的知识,希望对你有一定的参考价值。

下面我们将示例一个图片文件读取存储至数据库并从数据库中读取图片信息并显示的案例:

1、首先读取硬盘上的某一具体图片文件,读取模式设置为readBinary方式:

<cffile action = "readBinary" file = "temp directory here#file.serverFile#" variable = "test">

2、将读取出来的二进制内容存储至数据库中(注:数据库字段需设置成能存储图片类型的字段,如blob类型):

<cfquery datasource = "datasource">

insert into imageTest values (<cfqueryparam cfsqltype="cf_sql_blob" value="#test#">)

</cfquery>

通过1、2两个步骤,我们轻松实现了读取图片文件并存储至数据库的操作过程。

3、从数据库中读取图片信息,该文件可命名为dispImage.cfm:

<!--- 在此需特别注意enablecfoutputonly的压缩空白功能,如果不对该页面进行空白压缩,很可能会造成图片无法显示的问题 --->

<cfprocessingdirective suppressWhiteSpace="yes">

<cfsetting enablecfoutputonly="yes">

<!--- 读取相应的图片信息 --->

<cfquery datasource = "datasource">

select image from imageTest where variable here#

</cfquery>

<!--- 设置浏览器输出的格式,我们将它设置为图片的JPG类型,用户可根据实际情况改动类型设置 --->

<cfcontent type="image/jpg">

<!--- 输出图片 --->

<cfoutput>#toString(imageTest.image)#</cfoutput>

</cfprocessingdirective>

<cfabort>

4、显示图片内容,调用dispImage.cfm页面:

<img src = "dispImage.cfm?id=your variable here">

通过3、4两个步骤,我们也很容易的就完成了从数据库中读取图片信息并在页面显示的功能。

总结:实际上,除了图片文件可以如此处理,其它的文件也能通过类似方式进行处理,可将任意文件类型存储至数据库,只是文件大小的原因以及数据库存储读取速度性能限制,我们基本上还是不建议将文件存储至数据库,毕竟硬盘读取要快得多。
参考技术A 和其他类型意义读取,不需特别, 取出来后,使用相应的image类变量保存 参考技术B 数据库oracle,开发语言C#

byte[] bytes = OleDbDB.GetScalarStr("select feild from table") as byte[];//从数据库中读取数据转化成字节数组
System.IO.MemoryStream ms = new MemoryStream(bytes);//创建流
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);//从流中创建image对象
img.Save(path);//将image对象保存成图片

以上是关于怎样读取数据库中存储的二进制图片文件的主要内容,如果未能解决你的问题,请参考以下文章

JSP 从数据库中如何取得图片的路径?

怎样用php实现上传图片到数据库

数据库中图片存储为BLOB类型,如何取出转换

java网页怎样从后台读取背景图片显示在前台页面

C语言如何实现拷贝图片?几行代码即可搞定

怎样扩展EasyUI在页面中马上显示选中的本地图片