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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中图片存储为BLOB类型,如何取出转换相关的知识,希望对你有一定的参考价值。

参考技术A

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

将blog二进制对象,重新转换为图片文件流绑定到对象上,就可以显示了。

如何将图片存储Aesso数据库中

通常对用户上传的图片需要保存到数据库中。解决方法一般有两种:一种是将图片保存的路径存储到数据库;另一种是将图片以二进制数据流的形式直接写入数据库字段中。以下为具体方法:
一、保存图片的上传路径到数据库:
string uppath="";用于保存图片上传路径
获取上传图片的文件名
string fileFullname = this.FileUpload1.FileName;
获取图片上传的时间,以时间作为图片的名字可以防止图片重名
string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
获取图片的文件名(不含扩展名)
string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\\\") + 1);
获取图片扩展名
string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
判断是否为要求的格式
if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")

将图片上传到指定路径的文件夹
this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\\\" + dataName + "." + type);
将路径保存到变量,将该变量的值保存到数据库相应字段即可
uppath = "~/upload/" + dataName + "." + type;

二、将图片以二进制数据流直接保存到数据库:
引用如下命名空间:
using System.Drawing;
using System.IO;
using System.Data.SqlClient;
设计数据库时,表中相应的字段类型为iamge
保存:
图片路径
string strPath = this.FileUpload1.PostedFile.FileName.ToString ();
读取图片
FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
存入
SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123");
string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";操作数据库语句根据需要修改
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
if (myComm.ExecuteNonQuery() > 0)

this.Label1.Text = "ok";

myConn.Close();
读取:
...连接数据库字符串省略
mycon.Open();
SqlCommand mand = new
SqlCommand("select stuimage from stuInfo where stuid=107", mycon);查询语句根据需要修改
byte[] image = (byte[])mand.ExecuteScalar ();
指定从数据库读取出来的图片的保存路径及名字
string strPath = "~/Upload/zhangsan.JPG";
string strPhotoPath = Server.MapPath(strPath);
按上面的路径与名字保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(image);
bw.Close();
显示图片
this.Image1.ImageUrl = strPath;
采用俩种方式可以根据实际需求灵活选择。

SQL数据库中图片的地址如何存储的?

这个容易嘛~!
InputStream in=new FileInputStream("图片地址");
Connection conn=?自己去连接
PreparedStatement ps=conn.prepareStatement("插入语句");
ps.setBinaryStream(iint number,in,in.available());number为插入的第几个,且类型为image
或者是binary或者是Blob类型的数据
ps.executeUpdate();

如何取出sql数据库中的image类型的数据

Image类型 就是string类型
用基本的sql查询就可以正常读取
但是要将该图片呈现
可以通过C 、Java等工具获得

如何想mysql数据库中存储图片

两种,一种是将图片转化成二进制数据流存入数据库中。一种是保存图片的路径,然后前台读取路径去调用图片。相关的代码百度一下应该会有,第二种方法实现上比较简单,就是存储路径,然后根据路径读取对应的图片显示出来。第一种就比较麻烦,要先把图片转化成二进制数据,读取时就是从数据库读取对应数据再转化成图片显示出来。

如何在数据库中存储图片路径

你是用C/S模式还是B/S模式
C/S的话以二进制的方式存比较好。
B/S的话一般存路径。
路径是从程序的所在目录开始的。

如何在数据库中存储图片文件

解决方法一般有两种:
一种是将图片保存的路径存储到数据库;
另一种是将图片以二进制数据流的形式直接写入数据库字段中。

数据库中图片用什么类型字符

用varchar() ,存的是图片的路径地址,而不是图片本身。

数据库中blob类型指什么类型

你好:
BLOB (binary large object)----二进制大对象,是一个可以存储二进制文件的容器。
在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。
但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。

如何在网页中将存储在数据库中的图像显示为 blob

【中文标题】如何在网页中将存储在数据库中的图像显示为 blob【英文标题】:How to display images stored in database as a blob, in webpage 【发布时间】:2012-10-29 13:21:10 【问题描述】:

我想在网页中显示图像,该图像以 blob 类型存储在数据库中。我成功地将图像作为二进制/图像类型存储在数据库中。但是我怎样才能在网页中显示它。当我从数据库中检索时,我得到的图像类似于符号(������JFIF��������fExif��II*����������>)。

【问题讨论】:

您需要编写一些内容以在 URL 上提供图像,然后使用 img 标记 为什么将实际图像存储在数据库中?上传文件,将文件名存储在img标签中回显路径... @RickCalder - 根据图像的大小,每种方法各有利弊。它并不像每个人想象的那么简单。 (正如我以前所想的那样。)这只是强调利弊的众多文章之一。 onlineaspect.com/2007/07/10/… 我想在某些情况下确实如此,尽管他的测试标准存在严重缺陷。我个人认为这不是常规使用的好解决方案,特别是对于大图像或大量用户。老实说,我只是不认为它是一个可扩展的解决方案。我个人能看到的唯一真正的好处是您可以轻松地让不再使用的图像消失。 【参考方案1】:

您应该将图像数据转换为base64,然后写入响应,例如:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAAD
 NCAMAAAAsYgRbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c
 cllPAAAABJQTFRF3NSmzMewPxIG//ncJEJsldTou1jHgAAAARBJREFUeNrs2EEK
 gCAQBVDLuv+V20dENbMY831wKz4Y/VHb/5RGQ0NDQ0NDQ0NDQ0NDQ0NDQ
 0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PzMWtyaGhoaGhoaGhoaGhoaGhoxtb0QGho
 aGhoaGhoaGhoaGhoaMbRLEvv50VTQ9OTQ5OpyZ01GpM2g0bfmDQaL7S+ofFC6x
 v3ZpxJiywakzbvd9r3RWPS9I2+MWk0+kbf0Hih9Y17U0nTHibrDDQ0NDQ0NDQ0
 NDQ0NDQ0NTXbRSL/AK72o6GhoaGhoRlL8951vwsNDQ0NDQ1NDc0WyHtDTEhD
 Q0NDQ0NTS5MdGhoaGhoaGhoaGhoaGhoaGhoaGhoaGposzSHAAErMwwQ2HwRQ
 AAAAAElFTkSuQmCC"  /> 

http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/

或者您可以链接到服务器脚本,该脚本返回带有任何图像内容类型的标头并将图像数据直接写入响应。

【讨论】:

我已经测试过了,在 ie7-9、firefox、opera、chrome 上都可以正常工作,可能是旧浏览器不支持 ie6,我无法在 ie6 上进行测试 如果你有php服务器端语言你应该使用base64_encode例如***.com/questions/8498843/…,如果你有asp.net服务器端你应该使用Convert.ToBase64String方法msdn.microsoft.com/en-us/library/dhx0d524.aspx【参考方案2】:

这是我必须使用 Ajax 将数据库 (SQL Server) 中的二进制图像渲染到 html 页面时使用的代码

stm = conn.prepareStatement("SELECT IMAGE FROM TABLE" );
rs = stm.executeQuery();
return rs

然后使用 ajax 接收原始 rs(存储在“响应”中):

        $.post('./getImagePage.jsp', 
            action : 'getImage'
        , function(response)          
            if (response != '')                                                        
                var arrayBufferView = new Uint8Array( response[0].IMAGE);                                       
                var blob = new Blob( [ arrayBufferView ],  type: "image/jpg"  );
                var urlCreator = window.URL || window.webkitURL;
                var imageUrl = urlCreator.createObjectURL( blob );                                  
                var img = document.querySelector("#fotoMb");
                img.src = imageUrl;                     
        );     

还有 HTML:

<img id="fotoMb" style="border:5px solid;">

【讨论】:

【参考方案3】:

我建议您不要将图像保存到数据库! 那会使您的数据库服务器加载缓慢! 简短的回答,将图像保存在您的网络服务器的文件夹中,并且只引用您保存文件的网址。 祝你好运!

【讨论】:

以上是关于数据库中图片存储为BLOB类型,如何取出转换的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中存储图片的类型为BLOB类型,Java中如何将其读取并转为字符串?

在java中如何把字节数组存储到数据库?

java String类型转换为Blob类型

如何将图片存到数据库中

如何用javascript或jquery实现图片与二进制的转换

关于图片与base64相互转换的工具类