二进制图片存储数据库
㈠ 图片如何存放在oracle数据库
1、使用blob将图片保存为二进制格式,(唯蔽清可以用浏览器来转换)随后用base64编码来保存图片,再将base64编码保存进数据库的clob类指前型字段上。
㈡ 怎么将图片转换成二进制,存入数据库,然后怎么读出来并显示
1.将Image图像文件存入到数据库中
我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.
要这里有关数据的操作略写,我将一些代码段写成方法,方便直接调用.
//根据文件名(完全路径)
public byte[] SetImageToByteArray(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);
int streamLength = (int)fs.Length;
byte[] image = new byte[streamLength];
fs.Read(image, 0, streamLength);
fs.Close();
return image;
}
//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public byte[] SetImageToByteArray(FileUpload FileUpload1)
{
Stream stream = FileUpload1.PostedFile.InputStream;
byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];
stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);
stream.Close();
return photo;
}
2.从sql Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件
//要使用SqlDataReader要加载using System.Data.SqlClient命名空间
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}
//将byte[]转换成Image图像类型
//加载以下命名空间using System.Drawing;/using System.IO;
using System.Data.SqlClient;*/
public Image SetByteToImage(byte[] mybyte)
{
Image image;
MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);
image = Image.FromStream(mymemorystream);
return image;
}
㈢ asp如何将图片以二进制方式存如数据库。非form方式
可以试试用ADODB.Stream这个组件,这是ADO默认安装的,大多数ASP空间都支持的一个组件.
该组件支持二进制文件的读写操作,可以试试.
Set aso = CreateObject("ADODB.Stream")
aso.Mode = 3
aso.Type = 1
aso.Open
aso.LoadFromFile("文件的本地路径")
bstr = aso.Read(-1)
aso.Close
Set aso = Nothing
bstr 即为二进制内容.
㈣ 怎样读取数据库中存储的二进制图片文件
下面我们将示例一个图片文件读取存储至数据库并从数据库中读取图片信息并显示的案例:
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两个步骤,我们也很容易的就完成了从数据库中读取图片信息并在页面显示的功能。
总结:实际上,除了图片文件可以如此处理,其它的文件也能通过类似方式进行处理,可将任意文件类型存储至数据库,只是文件大小的原因以及数据库存储读取速度性能限制,我们基本上还是不建议将文件存储至数据库,毕竟硬盘读取要快得多。
㈤ php图片以二进制的方式存储在数据库的问题
mysql自己有select语句,用这个来操作
比如说你每个图片主码设一个auto_increasment的id(自动以1,2,3这样排序下去的方式存图片),然后比如说一共有50张图片,依次读出for(i=0,i<50,i++){select
图片
from
数据库
where(图片id=
i);}就这样可以依次根据图片的id读下去。
㈥ 在数据库中可用来存储图片的字段对象是那种类型的字段
图片存储到数据库的方式一般分类两种,一是直接图片文件存储到数据库,二是将图片存储磁盘,数据库中存储其物理路径
一、 把图片直接以二进制形式存储在数据库中
一般数据库提供一个二进制字段来存储二进制数据。比如SQL Server中的BINARY,VARBINARY;
1、BINARY 数据类型用于存储二进制数据。其定义形式为BINARY( n), n 表示数据的长度,取值为1 到8000 。在使用时必须指定BINARY 类型数据的大小,至少应为1 个字节。BINARY 类型数据占用n+4 个字节的存储空间。在输入数据时必须在数据前加上字符“0X” 作为二进制标识,如:要输入“abc ”则应输入“0xabc ”。若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X ”后添加一个0,如上述的“0xabc ”会被系统自动变为“0x0abc”。
2、VARBINARY数据类型的定义形式为VARBINARY(n)。 它与BINARY 类型相似,n 的取值也为1 到8000, 若输入的数据过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。当BINARY数据类型允许NULL 值时,将被视为VARBINARY数据类型。
一般情况下,由于BINARY 数据类型长度固定,因此它比VARBINARY 类型的处理速度快
另,MySQL中有个blob字段。Oracle数据库中是blob或bfile类型
2、 图片存储在磁盘上,数据库字段中保存的是图片的路径
存储路径存储路径字符串即可,sql中可以使用varchar/nvarchar;mysql可以使用varchar
总结:将图片文件直接以二进制存储数据库需要将图片提前转为二进制数据,以存储图片物理路径的方式需要将图片文件放置指定位置,这都需要配合不同的编程语言实现;