新增图片到数据库

本文介绍如何在Visual Studio 2015的mvc项目中实现双击图片将其保存为二进制数据到SQL Server 2014 Management Studio数据库。通过FileReader接口读取并转换图片为二进制,然后在控制器处理代码中完成数据库操作。
摘要由CSDN通过智能技术生成

开发工具与关键技术: Visual Studio 2015 mvc

作者:彭水清

撰写时间:2019/5/18

首先,我们来看一下效果图再看代码部分

新增双击选择图片添加到数据库
在这里插入图片描述

怎么样才能知道图片已经成功新增到数据库?那么就要到SQL Server 2014 Management Studio数据库里看数据有没有添加进来

这是添加完图片后数据库里显示的数据,把图片转化为二进制数组,保存到数据库,通过下面的图可以看到图片已经添加成功了。

在这里插入图片描述

那么要怎样才能实现这种效果呢?请看下面的代码:

首先隐藏input标签,给img双击事件,双击img标签,

调用chooseImageFile(‘fileWGSmallImage’)实现点击input标签弹出文件选择框

    <div class="col-12
    col-lg-3 text-center">

  <img src="" alt="" width="150" height="180" id="WGPicture" class="border border-primary" ondblclick="chooseImageFile     ('fileWGSmallImage');" />

<input type="file" name="fileWGPicture" id="fileWGSmallImage" hidden accept="image/*" onchange="showImgToView      ('fileWGSmallImage');" />

<p>双击选择图片</p>

   </div>

1、通过文件获取的接口来获取选择的图片并显示出来

2、FileReader接口提供了一个异步的API,通过这个API可以从浏览器中异步访问文件系统中的数据。因此,FileReader接口可以读取文件中的数据,并将读取的数据放入到内存中去

3、选择照片:用FileReader对象来读取本地数据,并且将数据结果赋值给image的src

//打开file表单,选择图片

function chooseImageFile(inputFileID)
{

 $("#" + inputFileID).click();

 }

//创建FileReader对象

 var imgReader = new FileReader();

//正则表达式 过滤图片文件

 regexImageFilter
 = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)  $/i;

//file表单改变事件,将选择的图片显示到img元素

function showImgToView(inputFileId) {

//选择图片文件

var imgFile = $("#" + inputFileId).get(0).files[0];

//console.log(imgFile);

//判断上传文件是否为图片格式

if (!regexImageFilter.test(imgFile.type)) {

layer.msg("请选择有效的图片文件", { icon: 0, title: "提示" });

}

else {

//readAsDataURL()方法可以获取API异步读取的文件数据,另存为数据URL;

//FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL。Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件。

imgReader.readAsDataURL(imgFile);

}

}

//读取文件 onload事件

imgReader.onload
= function (evt) {

//console.log(evt);

//将该URL绑定到img标签的src属性上,就可以实现图片的上传预览效果了。

$("#WGPicture").attr("src", evt.target.result);

$("#UWGPicture ").attr("src", evt.target.result);

};

下面就是控制器代码:

//声明一个byte[](字节型数组)来保存新增的图片

byte[] imgFile = null;

//判断图片文件是否为空

if (fileWGPicture != null && fileWGPicture.ContentLength> 0)

{

//初始化数组的长度,为节省空间,长度由实际上传的图片的长度决定

imgFile = new byte[fileWGPicture.ContentLength];

//读取该图片文件

//将图片转为流结束位置

//将流读取为byte[],参数:byte[],读取开始位置,读取字节数

fileWGPicture.InputStream.Read(imgFile,
0, fileWGPicture.ContentLength);

}

通过上面的代码,新增图片到数据库就已经完成了。新增图片到数据库用到了FileReader对象、正则表达式、onload事件、把图片转化为二进制操作。

@水平有限,错误和失误在所难免,若有如何意见和建议,请不吝指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值