ASP.NET MVC 中使用 AjaxFileUpload 插件时,上传图片后不能显示(预览)
AjaxFileUpload 插件是一个很简洁很好用的上传文件的插件,可以实现异步上传功能,但是在 ASP.NET MVC中使用时,会出现上传图片后不能正确的显示的问题,经过仔细排查,终于找到原因,解决方法如下:
uploadHttpData: function (r, type) {
var data = !type;
// var data = r;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if (type == "script")
jQuery.globalEval(data);
// Get the JavaScript object, if JSON is used.
if (type == "json")
{
// eval("data = " + data);
/*++++++++++++++以下为新增代码++++++++++++++++++++++++++*/
var datastr = r.responseText;
var newdatastr = datastr.replace("<pre>", "").replace("</pre>", "");
data = JSON.parse(newdatastr);
/*+++++++++++++++以上为新增代码++++++++++++++++++++++++++*/
}
// evaluate scripts within html
if (type == "html")
jQuery("<div>").html(data).evalScripts();
return data;
},
通用封装后的方法:
function fileUpload(requrl,elementid,modelimgid) {
$("#loading").ajaxStart(function () {
$(this).show();
}).ajaxComplete(function () {
$(this).hide();
});
$.ajaxFileUpload(
{
url: requrl,
secureuri: false,
fileElementId: elementid,
dataType: 'json',
data: { name: 'logan', id: 'id' },
success: function (data, status) {
if (typeof (data.Type) !== 'undefined') {
if (data.Type !== 'success') {
alert(data.Data);
} else {
//alert("aaa");
$('#imgshow').show();
$('#imgshow').append("<img src='" + data.Data + "' width='100' height='60' />");
$("#" + modelimgid).val(data.Data);
}
}
},
error: function (data, status, e) {
alert(e);
}
}
)
return false;
}
View 视图中调用:
function ajaxFileUpload() {
var url = "/SkinCategory/UploadFile";
var elementid = "fileToUpload";
var filepath = $("#fileToUpload").val();
var file = $("#fileToUpload");
//validateImage(file);
var modelimgid = "Icon";
return fileUpload(url, elementid, modelimgid);
}
<div class="controls">
<label> 自定义图标 </label> @if (Model != null)
{
if (!string.IsNullOrWhiteSpace(Model.Icon))
{
<span> 当前使用的图标</span>
<img src="@Model.Icon" class="imghref" alt="自定义图标" />
<input type="file" name="fileToUpload" id="fileToUpload" />
}
}
else
{
<span>请上传图标</span>
<input type="file" name="fileToUpload" id="fileToUpload" />
} @Html.HiddenFor(p => p.Icon)
<button id="buttonUpload" onclick=" return ajaxFileUpload();">
上传
</button> <img id="loading" src="/Content/img/loading.gif" style="display: none;" />
<div id="imgshow" style="display: none;">
</div> </div>
Control 代码:
public ActionResult UploadFile()
{
string savePath = ConfigHelper.GetProConfigString("skinCategory");
HttpPostedFileBase pfile = Request.Files[];
bool success = FileHelper.UploadFile(pfile, ref savePath);
Message msg = Message.UpLoadFileMessage(success);
msg.Data = savePath;
return Json(msg, JsonRequestBehavior.AllowGet); }
效果:

ASP.NET MVC 中使用 AjaxFileUpload 插件时,上传图片后不能显示(预览)的更多相关文章
- 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)
前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...
- 在ASP.NET MVC中使用JQ插件datatable
1. Models public class Citys { public int Id { get; set; } public string CityName { get; set; } publ ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
- Asp.net mvc 中View 的呈现(二)
[toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...
- [Asp.net mvc]Asp.net mvc 中使用LocalStorage
目前使用比较多的本地存储方案有比如Flash SharedObject.Google Gears.Cookie.LocalStorage.User Data.Open Database等方案.综合比较 ...
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
- ASP.NET MVC中controller和view相互传值的方式
ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...
随机推荐
- sql里将重复行数据合并为一行,数据用逗号分隔
一.定义表变量 DECLARE @T1 table ( UserID int , UserName ), CityName ) ); ,'a','上海') ,'b','北京') ,'c','上海') ...
- [Perl] Getopt 函数来接收用户参数的使用
我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...
- 案例:用Redis来存储关注关系(php版)
Redis提供了丰富的数据类型,比起关系型数据库或者简单的Key-Value存储(比如Memcached)来,Redis的数据模型与实际应用的数据模型更相近.比如下面说到的好友关系的存储,原作者使用了 ...
- (VS TFS) Adding existing project to solution in TFS.
正常的情况话,直接加入project,然后选择"Source control" -> “Add selected projects to source control.... ...
- 运用BigDecimal精确计算
package com.wzh.test; import java.math.BigDecimal; public class test { /** * @param args */ public s ...
- C语言中fseek函数
C语言fseek()函数:用来设定文件的当前读写位置 头文件: #include <stdio.h> 定义函数: int fseek(FILE * stream, long offset, ...
- C#局域网聊天工具_UDP广播
接上一讲,程序启动就要发送广播消息,如何发送广播消息,这一讲将给大家好好讲讲网络广播的知识,以及C#如何实现广播. 第一部分.什么是广播地址,以及广播地址怎么计算 1.1 广播地址是什么? 主机号全为 ...
- Centos 7配置LAMP
因为安装zabbix需要LAMP环境,特记录如下. LAMP指的Linux(操作系统).Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或P ...
- [POJ 1385] Lifting the Stone (计算几何)
题目链接:http://poj.org/problem?id=1385 题目大意:给你一个多边形的点,求重心. 首先,三角形的重心: ( (x1+x2+x3)/3 , (y1+y2+y3)/3 ) 然 ...
- Linux下网络编程学习杂记
1.TCP/IP协议的体系结构包含四层:应用层(负责应用程序的网络服务,通过端口号识别各个不同的进程)->传输层(传输控制层协议TCP.用户数据报协议UDP.互联网控制消息协议ICMP)-> ...