赞
踩
一、两种保存方式
1、 保存图片的方式主要的还是有两种的,一是把图片转换为二进制的方式保存,二是把图片保存到文件夹里面去,再获取图片的路径保存到数据库。个人不推荐第一种方法,因为把图片保存到数据库是非常占用空间的,并且数据容易出错。
二、二进制保存
1、 虽然不推荐第一种方法,但对于我这么一个初学者来说总得什么都要尝试一下吧。
2、 首先要做的是弹出这个windows的文件选择框,它的弹出方法是用input的type="file"这个属性弹出的,hidden accept后面的属性就是限定文件选择的类型,填写了图片类型这个选择框就会只显示图片文件。
3、 选择了图片文件,它就会暂时保存在这个input标签里面,后面获取图片到控制器时直接通过name名就可以获取到了。
4、 图片是文件类型,如果用post提交的话就会发现,其他所有的name名都可以获取到,但就单单这个input里的name就获取不到,后来才发现文件类型是不能用post提交的。
5、 这时就要换一种提交方式了,不同于以往把路径写在js代码里面的,这里则是把路径写在了form上了,这里用到提交表单的插件是jquery.form.min.js。
6、 接着再用ajaxSubmit进行提交,这个方法就是直接把整个form表单的内容全部都提交到了控制器
$("#FormOrderID").ajaxSubmit(function (data) {})
一、转换二进制
1、 控制器接收图片时的参数用HttpPostedFileBase接收并且后面的参数名就是页面input的name名,这个名字起的时候一定不能和数据库字段名字一致
2、 把图片转换成流,保存到数据库就行了,控制器接收的类型是byte[]数组格式,控制器保存图片字段的数据类型是image
//图片保存
byte[] imgFile = null;
if (PaperInvoicesimge != null && PaperInvoicesimge.ContentLength > 0)
{
//初始化数组的长度
imgFile = new byte[PaperInvoicesimge.ContentLength];
//将流读取为yte[]
PaperInvoicesimge.InputStream.Read(imgFile, 0, PaperInvoicesimge.ContentLength);
}
PWSellIndent.siPaperInvoicesPicture = imgFile;
3、保存到数据库后,它显示的样子就是二进制数据了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。