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

您所在的位置:网站首页 存储照片的字段的数据类型 以二进制的方式保存图片到数据库

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

2024-07-12 15:24| 来源: 网络整理| 查看: 265

一、两种保存方式

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 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3