ASP.NET MVC从数据库读取、存入图片

一、DEMO效果

先选择图片,点击上传后,即可在照片预览中看到照片。如果需要更改,重新上传就可覆盖原图片。

                                                                                                          

二、代码

页面端,这里有个细节:再次上传后,如果<img>的URL不变,浏览器会从缓存中读取图片,这就会导致图片预览不会刷新,不显示刚上传的图片。解决这个问题只需要 传一个随机字符串作为参数即可。


@{Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>图片编辑</title><link href="~/Scripts/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet" /><link href="~/Scripts/toastr/build/toastr.min.css" rel="stylesheet" /><script src="~/Scripts/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script><script src="~/Scripts/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script><script src="~/Scripts/this/customEditor_fieldTypes.js"></script><script src="~/Scripts/this/tools.js"></script><script src="~/Scripts/toastr/build/toastr.min.js"></script>
</head>
<body><div class="row"><div class="col-md-12"><ul class="nav nav-tabs" id="myTab" style="margin-top:20px"><li class="active"><a href="#tab_1" data-toggle="tab" class="btn" id="tabone">图片信息</a></li></ul><div class="tab-pane fade active in" id="tab_1"><div class="form-group col-md-6">@using (Ajax.BeginForm("", null, new AjaxOptions() { OnSuccess = "PostSuc", OnFailure = "PostFail", HttpMethod = "Post" }, new { enctype = "multipart/form-data", id = "FormImg" })){<input type="hidden" name="EmployeeId" id="EmployeeId"><span class="btn btn-default fileinput-button"><input type="file" name="file1" id="file1"></span><button class="btn btn-primary start" type="button" id="btnpictureid"><span><i class="fa fa-file"></i>&nbsp;上传</span></button><fieldset><legend>照片预览</legend><img id="headimg" src="@Url.Action("ShowImage","Basic",new { @ViewBag.EmployeeId})" /></fieldset>}</div></div></div></div>
</body>
</html>
<script type="text/javascript">var EmployeeId = @ViewBag.EmployeeId;$(document).ready(function () {$("#EmployeeId").val(EmployeeId);$("#btnpictureid").bind("click", function () { SaveImg(); });})function SaveImg() {$("#FormImg").attr("data-ajax-success", "OnSaveImgSuccess(data)");$("#FormImg").attr("data-ajax-failure", "OnSaveImgFail()");$("#FormImg").attr("action", "/Basic/UploadImg");$("#FormImg").submit();}function OnSaveImgSuccess(data) {if (data.result == "success") {toastr.success("上传成功");$("#headimg").attr({ "src": "/Basic/ShowImage?EmployeeId=" + @ViewBag.EmployeeId +"&Random=" + (Math.random()*100)+1});//解决因为URL没变导致图片不刷新的问题}else {toastr.error(data.msg);}}function OnSaveImgFail(msg) {toastr.error("图片上传失败,请重试!");}
</script>

三、控制器端代码 

 ///显示图片    public ActionResult ShowImage(long EmployeeId,int Random = 999 )
{byte[] byData = _IEmployeeInfo.GetEmployeeById(EmployeeId).Image;return File(byData, @"image/jpeg");
}///上传图片
public ActionResult UploadImg(long EmployeeId)
{string msg = string.Empty;string result = string.Empty;byte[] imgData = null;int flag = 0;if (Request.Files.Count > 0){HttpPostedFileBase file = Request.Files["file1"];if (file.ContentLength < 100 * 1024){string fileType = System.IO.Path.GetExtension(file.FileName);//获取文件类型if (fileType != null){fileType = fileType.ToLower();//将文件类型转化成小写if ("(.gif)|(.jpg)|(.bmp)|(.jpeg)|(.png)".Contains(fileType)){imgData  = new byte[file.ContentLength];//新建一个长度等于图片大小的二进制地址file.InputStream.Read(imgData, 0, file.ContentLength);//将image读取到ImageData中flag = _IEmployeeInfo.UpdateImg(EmployeeId, imgData);if (flag > 0){result = Tips.success;}}else{msg = "只支持图片格式";result = Tips.fail;}}}else{msg = "图片大小不能超过100KB";result = Tips.fail;}}else{msg = "上传图片不能为空";result = Tips.fail;}return Json(new Res { result = result, msg = msg });
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用模板文件批量导出word文档

需求背景 因为疫情爆发&#xff0c;进入一级响应状态&#xff0c;公安部门进行了严格出入境管理&#xff0c;需要对每个出入境的人进行状态跟踪。 疫情专班会将出入境的每个人员汇总在一张Excel表中&#xff0c;如下图所示&#xff1a; 每一行对应一个人员信息&#xff0c;一个…

原子操作的实现原理(锁和循环CAS)

1 引言 原子&#xff08;atom&#xff09;本意是“不能被进一步分割的最小粒子”&#xff0c;而原子操作&#xff08;atomic operation&#xff09;意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和…

Linux之软件安装YUM

在终端中输入yum即可…… 如果已经安装&#xff0c;会显示yum的参数 如果没有安装&#xff0c;会提示yum未安装或无效命令…… 建议&#xff1a; 以Redhat Enterprise Linux 5&#xff08;RHEL 5&#xff09;为例&#xff1a; 1. 首先你可以使用命令&#xff1a;rpm -qa |grep …

cdgb调试linux崩溃程序

直接上原图: 使用命令:cgdb test test.core.2235 安装cgdb程序步骤&#xff1a; 1&#xff1a;wget http://cgdb.me/files/cgdb-0.7.1.tar.gz(网络会受到影响) 2:解压.tar.gz文件 3:./configure --prefix/usr/local之后会提示 error: CGDB requires curses.h or ncurses/cu…

hMailServer 邮件系统安装配置篇

此篇进入正题&#xff0c;详细的说一下安装和配置过程。得先说一下&#xff0c;hMailServer是真正的邮件服务端&#xff0c;而Roundcube Webmail仅仅是为hMailServer提供Webmail应用的&#xff0c;可以让你通过Web方式收发邮件&#xff0c;如果你不用Web方式收发邮件&#xff0…

八皇后问题 递归求解法

#include <iostream> #include <fstream> #include <string.h>/** 八皇后问题递归方法实现 */ using namespace std;ofstream file;//用以计数计算结果的数目 int count 1; /** 打印的棋盘其中打印1的位置是皇后的位置&#xff0c;0空位。 这里因为在控制台…

squid代理服务器在企业网中的应用

一&#xff0c;squid服务器概述 Squid是一种在Linux系统下使用的优秀的代理服务器软件。 squid不仅可用在Linux系统上&#xff0c;还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。 Squid与Linux下其它的代理软件如Apache、Socks…

MPLS ×××配置

MPLS 配置以下面拓扑为例配置MPLS 拓扑说明&#xff1a;R1&#xff0c;R2、R3路由器上分别配置Loopback1 接口&#xff0c;IP地址分别为1.1.1.1&#xff0c;2.2.2.2 3.3.3.3&#xff1b;并配置OSPF&#xff0c;让MPLS区域内的地址可以进行标签交换1、在MPLS区域配置标签交换R1&…

oracle异常处理

2019独角兽企业重金招聘Python工程师标准>>> CREATE OR REPLACE PACKAGE BODY TEST_PACKAGE IS --异常分为&#xff1a;编译是错误(语法错误)、运行时错误(编译器无法检查&#xff0c;对应某些情况程序是可以正常执行的&#xff0c;但在某些特点情况下程序不会正确执…

IOS程序内发短信

2019独角兽企业重金招聘Python工程师标准>>> iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference 一些笔记: MFMes…

JQUERY学习第二天之制作横纵向导航菜单

$(document).ready(function(){ //页面中的DOM已经装载完成时&#xff0c;执行的代码 $(".main > a").click(function(){ //找到主菜单项对应的子菜单项 var ulNode $(this).next("ul"); /* if (ulNode.css("display") "none"…

任何项目都适用的CMakeLists配置

声明下&#xff1a;本人想把CMakeLists中的内容写好,csdn格式化了&#xff0c;无能为力&#xff0c;以下是本人在生产环境中已经使用过了。 测试代码: #include int main() { //不支持linux //#ifndef _DEBUG #ifndef DEBUG std::cout << “release” << std::end…

深入 Apache Kylin Cube 与查询优化

2019独角兽企业重金招聘Python工程师标准>>> 近几年&#xff0c;Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起。它充分发挥Hadoop、Spark、HBase等技术的优势&#xff0c;通过对超大规模数据集进行预计算&#xff0c;实现秒级甚至亚秒级的查询响…

Centos搭建SVN服务器及配置文件

2019独角兽企业重金招聘Python工程师标准>>> 1、安装 #yum install subversion 判断是否安装成功 yum安装结束时会显示版本 svnserve, version 1.6.11 (r934486) 出现上面的提示&#xff0c;说明安装成功。 有了SVN软件后还需要建立SVN库。 #mkdir /opt/svn/repos …

IP地址查询接口及调用方法

为什么80%的码农都做不了架构师&#xff1f;>>> 设计蜂巢IP地址查询接口&#xff1a;http://www.hujuntao.com/api/ip/ip.php腾讯IP地址查询接口&#xff1a;http://fw.qq.com/ipaddress新浪IP地址查询接口&#xff1a;http://int.dpool.sina.com.cn/iplookup/iplo…

加解密技术(Cryptography)基本概念

转载自&#xff1a;http://www.cnblogs.com/piyeyong/archive/2010/06/10/1744692.html 要想实现在不安全的网络上的安全通信&#xff0c;需要考虑3个方面的问题&#xff1a;保密(Privacy)&#xff0c;认证(Authentication)&#xff0c;完整性(Integrity)。 1.保密(Privacy) 数…

.NET配置文件读写实例(附SosoftConfigHelper类)

配置文件在软件开发中起到举足轻重的作用&#xff0c;可以说不可或缺。.NET程序可使用.config文件作为配置文件&#xff0c;例如WinForm程序的*.app.config、Web程序的web.config。.config文件是标准的XML文件。本实例可读取、修改和添加app.confing或者web.config文件的appSet…

【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...

一、错误内容 今天用phpmyadmin连接mysql里面的某个数据库时时遇到了下面的提示&#xff1a; #1045 - Access denied for user rootlocalhost (using password: NO) phpMyAdmin 试图连接到 MySQL 服务器&#xff0c;但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户…

H3C 帧中继初级配置(二)

配置思路&#xff1a; 1、先配置FR-SWITCH 2、再配置RTA、RTB、RTC FR-SWITCH详细配置步骤如下&#xff1a; [FR-Switch]fr switching //启动路由器帧中继功能 [FR-Switch]interface s6/0 [FR-Switch-Serial6/0]link-protocol fr //链路协议封闭为FR [FR-Switch-Serial6/0]fr…