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. C++ virtual虚函数

    #include<iostream> using namespace std; class Base{ public: void m() { cout << "it' ...

  2. 什么是ODBO---OLE DB for OLAP

      我怎么一步一步追到ODBO了?   mondrian核心api->olap4j->jedox也在用olap4j->ODBO? ODBO是什么呢? OLE DB for OLAP ...

  3. 简单的ASP.NET Forms身份认证

    读了几篇牛人的此方面的文章,自己也动手做了一下,就想有必要总结一下.当然我的文章质量自然不能与人家相比,只是写给从没有接触过这个知识点的朋友. 网站的身份认证我以前只知道session,偶然发现一些牛 ...

  4. EMC Documentum DQL整理(一)

    1.Get user SELECT * FROM dm_user WHERE r_is_group = 0   2.Get Group SELECT * FROM dm_group WHERE gro ...

  5. 10个关于Java异常的常见问题

    这篇文章总结了十个经常被问到的JAVA异常问题: 1.检查型异常VS非检查型异常 简单的说,检查型异常是指需要在方法中自己捕获异常处理或者声明抛出异常由调用者去捕获处理: 非检查型异常指那些不能解决的 ...

  6. C#语言基础——特殊集合

    特殊集合一.stack集合栈:stack,先进后出,一个一个赋值,一个一个取值,按顺序,且没有索引属性和方法:.count 取集合内元素的个数.push() 将元素一个一个推入集合中.pop() 将元 ...

  7. 多年前写的文本框扩展控件(有ValueChanging事件等),已放github

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 使用 GitHub ...

  8. NuGet及快速安装使用

    关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package M ...

  9. linux面试题

    一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取uu要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 ...

  10. Java基础语法总结1

    一.标识符及字符集 Java语言规定标识符是以字母.下划线"_"或美元符号"$"开始,随后可跟数字.字母.下划线或美元符号的字符序列.Java标识符大小写敏感, ...