如何把图片存到数据库中

如何把图片存到数据库中,第1张

通常对用户上传的需要保存到数据库中。解决方法一般有两种:一种是将保存的路径存储到数据库;另一种是将以二进制数据流的形式直接写入数据库字段中。以下为具体方法:

一、保存的上传路径到数据库:

string uppath="";//用于保存上传路径

//获取上传的文件名

string fileFullname = thisFileUpload1FileName;

//获取上传的时间,以时间作为的名字可以防止重名

string dataName = DateTimeNowToString("yyyyMMddhhmmss");

//获取的文件名(不含扩展名)

string fileName = fileFullnameSubstring(fileFullnameLastIndexOf("\\") + 1);

//获取扩展名

string type = fileFullnameSubstring(fileFullnameLastIndexOf("") + 1);

//判断是否为要求的格式

if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")

{

//将上传到指定路径的文件夹

thisFileUpload1SaveAs(ServerMapPath("~/upload") + "\\" + dataName + "" + type);

//将路径保存到变量,将该变量的值保存到数据库相应字段即可

uppath = "~/upload/" + dataName + "" + type;

}

二、将以二进制数据流直接保存到数据库:

引用如下命名空间:

using SystemDrawing;

using SystemIO;

using SystemDataSqlClient;

设计数据库时,表中相应的字段类型为iamge

保存:

//路径

string strPath = thisFileUpload1PostedFileFileNameToString ();

//读取

FileStream fs = new SystemIOFileStream(strPath, FileModeOpen, FileAccessRead);

BinaryReader br = new BinaryReader(fs);

byte[] photo = brReadBytes((int)fsLength);

brClose();

fsClose();

//存入

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);

myCommParametersAdd("@photoBinary", SqlDbTypeBinary, photoLength);

myCommParameters["@photoBinary"]Value = photo;

myConnOpen();

if (myCommExecuteNonQuery() > 0)

{

thisLabel1Text = "ok";

}

myConnClose();

读取:

连接数据库字符串省略

myconOpen();

SqlCommand command = new

SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改

byte[] image = (byte[])commandExecuteScalar ();

//指定从数据库读取出来的的保存路径及名字

string strPath = "~/Upload/zhangsanJPG";

string strPhotoPath = ServerMapPath(strPath);

//按上面的路径与名字保存文件

BinaryWriter bw = new BinaryWriter(FileOpen(strPhotoPath,FileModeOpenOrCreate));

bwWrite(image);

bwClose();

//显示

thisImage1ImageUrl = strPath;

采用俩种方式可以根据实际需求灵活选择。

我的笔记:

6:对数据库存取进行的 *** 作:

核心思想:通过二进制流的形式进行存储和读取。

具体:存储:一般是通过文件上传的方式进行存储的

1首先通过request获得表单中的地址

2然后根据这个路径可以使FileInputStream获得文件输入流

3pstmtsetBinaryStream(i,

fis,

fisavailable())

最后pstmtexecuteUpdate();就完成整个插入语句了。

读取:1根据url的id传一个对应数据库摸个的id号

2根据这个id执行查询,通过rstgetBinaryStream(1)返回一个输入流(里面存的是)

3读输入流,放到字节数组中,再通过response返回一个能输出二进制流的ServletOutputStream实例(ServletOutputStream

sos=

responsegetOutputStream();

),

4通过这个输出流把字节数组的字节流写出

希望对你有所帮助哈

当然是用VARCHAR来作为存储路径的字段类型咯,大小应该设为 255 。

char是字符型的,要自己指定大小

text是用来存放文本的,大小由系统指定为16,但是文本实际上不是

存储在表中,而是存在系统分配的页中,这些用户不用管。

从项目的角度上来说,存储和数据库存储都是必须要分离的,否则这一个模块就能拖垮你的整个工程。 二进制的存储方式,已经淘汰了,性能非常差,在以后的数据库版本里已经取消了这个存储方式。存放路径,是一种非常方便的解决方案,不存在什么其他的问题,容易管理。比如,你以前用二进制存储的一个,又要IO又要缓存的才能展示给用户看。现在你保存的是地址,仅仅需要把链接提取出来即可,这样减少了数据访问上的压力。

ServerMapPath("//UpLoad/ABImages/2010122/20101202062328873553_text_thumbjpg

")

这个输出就是绝对路径。

以上就是关于如何把图片存到数据库中全部的内容,包括:如何把图片存到数据库中、JSP 从数据库中如何取得图片的路径、sqlserver数据库里存图片路径用什么类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/9726035.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存