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 图片预览的更多相关文章

  1. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  2. 适用于各浏览器支持图片预览,无刷新异步上传js插件

    文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...

  3. DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...

  4. JS魔法堂之实战:纯前端的图片预览

    一.前言 图片上传是一个普通不过的功能,而图片预览就是就是上传功能中必不可少的子功能了.在这之前,我曾经通过订阅input[type=file]元素的onchange事件,一旦更改路径则将图片上传至服 ...

  5. js实现图片预览

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. 普通图片预览及demo(非分块)

    演示地址: http://codeman35.itongyin.com:19003/v2/image.html 功能:通过加载大图预览,这种方式无法和google art 比较.只能应用于简单的图片预 ...

  7. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...

  8. js 图片预览

    图片预览 $('#pac_recipe').change(function() { var imgsrc = ''; ]) { //chrome firefox imgsrc = window.URL ...

  9. 如何通过js实现图片预览功能

    一.效果预览 效果图: 二.实现代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

随机推荐

  1. iOS 学习 - 11.圆角(小于等于四个)类似气泡和计算字符高度

    使用贝塞尔曲线, // 小于四个角 圆角 -(void)setbor{ NSString *str = @" couldn't fit this all in a comment to @l ...

  2. 转载:jsp中jstl标签的类似 if - else 语句 的语法

    原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...

  3. js document.createElement()的用法 (转)

    document.createElement()的用法 分析代码时,发现自己的盲点--document.createElement(),冲浪一番,总结了点经验. document.createElem ...

  4. 用css3绘制你需要的几何图形

    1.圆形 示例: 思路:给任何正方形元素设置一个足够大的 border-radius ,就可以把它变成一个圆形.代码如下: html: <div class="size example ...

  5. IO流03--毕向东JAVA基础教程视频学习笔记

    提要 16 读取转换流17 写入转换流18 流操作规律-119 流操作规律-220 改变标准输入输出设备21 异常的日志信息22 系统信息 16 读取转换流 字符流体系中的InputStreamRea ...

  6. Linux:kill 进程

    在使用Linux时,出现端口占用.进程已启动(但处于不可控状态)情况时如何处理? 发现已知端口被占用时,可以使用netstat -apn | grep yourPort 来查看占用该端口的进程的pid ...

  7. 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim

    时间太快了,三月又要过去了,告别一下...继续期待生死未卜的四月,今天我们继续挖一挖. 一: Environment.StackTrace 可能我们看到最多的就是catch中的e参数,里面会有一个St ...

  8. collections中可命名元组和队列

    一丶可命名元组(nametuple)

  9. [转]C#网络编程(订立协议和发送文件) - Part.4

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...

  10. [转]AngularJS fixed header scrollable table directive

    本文转自:http://pointblankdevelopment.com.au/blog/angularjs-fixed-header-scrollable-table-directive This ...