求助:做一个JAVA WEB 网上商城项目,需要将电脑上的图存入到数据库
然后在网页中显示出来 求助如何将电脑中图片保存至sqlserver中
我的表是这样的:![图片说明]
! (https://img-ask.csdn.net/upload/201803/13/1520931579_310157.png)
急需 在线等
图片的类型在数据库中是picture型
方法1.将读取到的图片转化成二进制形式。再结合insert into 语句插入数据表中的blob类型字段中去。
方法2.图片存储在磁盘,数据库存储路径
将读取到的图片转化成二进制形式
在数据库中存储文件路径是比较常规的做法,如果是转成二进制存储,存入和读取比较麻烦,浪费资源
我一般是base64转码后存储,然后base64再输出图片就行。
像其他人说那样,sqlserver支持图片保存
第一步:
//获取当前选择的图片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFile()); //获取当前图片的路径 string path = openFileDialog1.FileName.ToString(); //将制定路径的图片添加到FileStream类中 FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //通过FileStream对象实例化BinaryReader对象 BinaryReader br = new BinaryReader(fs); //通过BinaryReader类对象的ReadBytes()方法将FileStream类对象转化为二进制数组 byte[] imgBytesIn = br.ReadBytes(Convert.ToInt32(fs.Length));
第二步: //将图片添加到数据库中 string sql="insert into pic values(@pic)"; SqlParameter[] param = new SqlParameter[] { new SqlParameter("@pic", imgBytesIn) }; DBHelper.GetExecuteQuery(sql, param);
第三步: //将图片从数据库中取出 string sql="select * from pic where id=0"; SqlDataReader reader = DBHelper.GetExecuteReader(sql, null); MemoryStream mss = null; if (reader.Read()) { byte[] bytes = (byte[])reader["pic"]; mss = new MemoryStream(bytes); }
this.pictureBox2.Image = Image.FromStream(mss);
以上是复制来的,但是一般不需要这么做,只需要把图片路径保存就可以了
this.photo.PostedFile.SaveAs(path + "名字.格式");
然后把路径存入数据库
如果存那种image格式放入数据库,图片多的时候就会给数据库造成负担。
保存路径就行了,没必要直接保存图片
图片转成二进制 数据库表里加一个image字段来保存就可以了
图片存储在磁盘,数据库存储路径,专业开发一定是分开的,数据库原则上建议不存图片。
第一步是将图像读入到字节数组,第二步建立Command命令,与数据率库创建连接,第三步创建Parameter,数据库的字段,将数据读进去
建议多用用百度。
http://gqsunrise.iteye.com/blog/1995280
不建议存储数据库,到时候你的数据库会变得非常大,备份会非常费时,建议建立一个文件夹,然后再在数据库存路径,我这样干过的
如果图片太大,数据可以存下图片的路径,这样数据占用就少很多了。并且不影响你的使用