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. 苹果企业账号打包发布APP流程详解

    原文链接:http://www.cnblogs.com/mddblog/p/4718228.html 一.通过企业账号申请证书 1 Certificate Signing Request (CSR)文 ...

  2. cocoapod-使用cocoapod安装AFNetworking3.0

    1. 在终端用cd命令加入到工程目录下,用命令:touch Podfile创建一个Podfile文件. 2. Podfile文件: #source 'https://github.com/CocoaP ...

  3. DB2导入导出数据库数据

    导出数据库中数据 在db2cmd命令下生成建库脚本(-z指定模式名) db2look -d BBS -z db2admin -u db2admin -e -o bbs.sql 在db2cmd命令下导出 ...

  4. javaScript基础语法(下)

    4.逻辑控制语句 4.1条件结构 条件结构分为if结构和switch结构. 通常在写代码时,您总是需要为不同的决定来执行不同的动作.您可以在代码中使用条件语句来完成该任务. 在 JavaScript ...

  5. get set 中 快捷键生成的get方法中 renturn 没有 this.对象 中的this 解决方法

    选EDIT  进行修改

  6. Git从零教你入门(4):Git服务之 gogs部署安装

    Git从零入门系列4: 先看上一篇文章: http://www.51testing.com/index.php?uid-497177-action-viewspace-itemid-3706817 今 ...

  7. [20140829]spinlock导致cpu居高不下

    背景: 出现cpu高于常规的告警 排查: 1.开跟踪,没有发现cup特别高的查询 2.查看内核cpu使用量,看是否是sql server 端引起 3.查看负荷,是否负荷特别高这里使用 batch re ...

  8. SQLServer中ISNULL、NULLIF和CONVERT函数

    create view sss as(select ISNULL(operate_time, CONVERT(VARCHAR(20),create_time,120)) time from s_pro ...

  9. PKG_COLLECTION_LHR 存储过程或函数返回集合类型

    存储过程或函数可以返回集合类型,方法很多,今天整理在一个包中,其它情况可照猫画虎. CREATE OR REPLACE PACKAGE PKG_COLLECTION_LHR AUTHID CURREN ...

  10. Linux 学习001

    遇到的问题一: xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到root用户下,怎么切换就不用说了吧, ...