当前位置:   article > 正文

以二进制的方式保存图片到数据库_图片转成二进制存入数据库

图片转成二进制存入数据库

一、两种保存方式

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;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、保存到数据库后,它显示的样子就是二进制数据了
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/125237
推荐阅读
相关标签
  

闽ICP备14008679号