以二进制的方式保存图片到数据库

28 篇文章 0 订阅

一、两种保存方式

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、保存到数据库后,它显示的样子就是二进制数据了
在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值