MVC 图片预览
1.页面cshtml
<form name="frmInput" id="frmInput" method="post" action="@Url.Action(ViewContext.RouteData.Values["Action"].ToString())" enctype="multipart/form-data" >
<div class="form-group col-md-6">
<label class="control-label col-md-4">
图片一
</label>
<div class="col-md-8 input-group">
<ul class="list-unstyled">
<li style="float: left; width: 180px;position:relative;">
<img src="@Url.Content(Model.MDetailImageUrl)" alt="图片" width="140" />
<input class="input_file" id="TDetailImageUrl" type="file" name="TDetailImageUrl" tid="5" onchange="ImagePreview(this)" />
</li>
</ul>
</div>
</div>
<div class="form-group col-md-6">
<label class="control-label col-md-4">
图片二
</label>
<div class="col-md-8 input-group">
<ul class="list-unstyled">
<li style="float: left; width: 180px;position:relative;">
<img src="@Url.Content(Model.MDetailImageUrl)" alt="图片" width="140" />
<input class="input_file" id="MDetailImageUrl" type="file" name="MDetailImageUrl" tid="6" onchange="ImagePreview(this)" />
</li>
</ul>
</div>
</div>
<input type="button" value="保存" onclick="Input.Save(this)" class="btn-8" />
</from>
2.脚本提交
路径:@Html.Hidden("ImagePreviewUrl", Url.Action("ImagePreview"))
//图片预览
function ImagePreview(e) {
if ($(e).val() == "") {
alert("请选择一个图片文件,再点击上传。");
return;
} $(e).closest("form").ajaxSubmit({
url: $("#ImagePreviewUrl").val() + "?name=" + $(e).attr("name"),
success: function (data, status) {
if (status == "success" && data != "") {
$(e).parent().children("img").attr("src", data);
}
else {
alert("图片格式不对");
}
}
});
}
3. 控制器方法
ImagesAPPI.PreviewDataForSingle为自定义方法,返回的是base64数据
public string ImagePreview(string name)
{
int fileIndex = ;
string result="";
if (Request.Files.Count > )
{
for (int i = ; i < Request.Files.Count; i++)
{
if (!string.IsNullOrWhiteSpace(Request.Files[i].FileName))
{
string inputName = Request.Files.AllKeys[i];
if (!string.IsNullOrWhiteSpace(inputName) && name == inputName)
{
fileIndex = i;
break;
}
}
}
result = ImagesAPPI.PreviewDataForSingle(Request.Files[fileIndex], , );
}
return result;
}
PreviewDataForSingle静态方法
/// <summary>
/// 上传图片预览
/// </summary>
/// <param name="files">文件数据</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
/// <returns>返回图片预览数据</returns>
public static string PreviewDataForSingle(HttpPostedFileBase file, int width, int height)
{
if (file.ContentLength > && file.ContentType.IndexOf("image/") >= )
{
return "data:image/jpeg;base64," + Convert.ToBase64String(ResizeImg(file.InputStream, width, height).GetBuffer());
} return "";
}
附:使用图片路径预览
/// <summary>
/// 图片转为base64编码
/// </summary>
/// <param name="Imagefilename">图片绝对路径</param>
/// <returns></returns>
public static string ImgToBase64String(string Imagefilename)
{
if(string.IsNullOrWhiteSpace(Imagefilename)) return "";
return "data:image/jpeg;base64," + Convert.ToBase64String(System.IO.File.ReadAllBytes(Imagefilename)); ;
}
MVC 图片预览的更多相关文章
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- 适用于各浏览器支持图片预览,无刷新异步上传js插件
文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...
- DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...
- JS魔法堂之实战:纯前端的图片预览
一.前言 图片上传是一个普通不过的功能,而图片预览就是就是上传功能中必不可少的子功能了.在这之前,我曾经通过订阅input[type=file]元素的onchange事件,一旦更改路径则将图片上传至服 ...
- js实现图片预览
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 普通图片预览及demo(非分块)
演示地址: http://codeman35.itongyin.com:19003/v2/image.html 功能:通过加载大图预览,这种方式无法和google art 比较.只能应用于简单的图片预 ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...
- js 图片预览
图片预览 $('#pac_recipe').change(function() { var imgsrc = ''; ]) { //chrome firefox imgsrc = window.URL ...
- 如何通过js实现图片预览功能
一.效果预览 效果图: 二.实现代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
随机推荐
- java 实现(代码) -- 水仙花数 + 杨辉三角形
/* 在控制台输出所有的“水仙花数” 水仙花:100-999 在以上数字范围内:这个数=个位*个位*个位+十位*十位*十位+百位*百位*百位 例如:xyz=x^3 +y^3 +z^3 怎么把三位数字拆 ...
- android 界面设计基本知识Ⅲ
本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...
- Android点击空白处,隐藏软键盘
在做登陆或者注册的时候,软键盘经常可能会挡住一些界面.我们需要在输入完成之后隐藏软键盘. 在我们点击空白处或者非EditText的地方来隐藏软键盘. public class HomeActivity ...
- 在网页中显示CHM (c# csharp .net asp.net winform)
CHM即“已编译的帮助文件”,主要由.hhc(目录文件)..hhk(索引文件)以及相应的帮助主题文件(.html,.htm)这些内容编译而成. 方法对比 在网页中显示CHM内容,大致有以下几种办法: ...
- Servlet/JSP-06 Session
一. 概述 Session 指客户端(浏览器)与服务器端之间保持状态的解决方案,有时候也用来指这种解决方案的存储结构. 当服务器端程序要为客户端的请求创建一个 Session 时,会首先检查这个请求里 ...
- Servlet/JSP-02 Servlet相关类
ServletConfig / ServletContext / ServletRequest / ServletResponse 一. ServletConfig:封装了Servlet得配置信息,并 ...
- SQL Server 2008 R2——T-SQL 存储过程 返回表
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- js日期比较
alert(EDate< new Date().format("yyyy-MM-dd hh:mm:ss")); Date.prototype.format = functio ...
- Linux小技巧总结
1.fdisk创建磁盘分区不重启系统partprobe 使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统才能够读取到/dev/sda*,而使用partprobe则可以使 ...
- Centos和Redhat的区别和联系
网上看到的,转载给大家 CentOS与RedHat的关系: RedHat在发行的时候,有两种方式:二进制的发行方式以及源代码的发行方式.无论是哪一种发行方式,你都可以免费获得(例如从网上下载),并再次 ...