使用jquery uploadify上传图片报302错误研究了半天,发现我上传的action中有根据session判断用户是否登录,如果没有登录就跳到登陆页,所以就出现了302跳转错误。原来更新了flash的版本以后,通过uploadify获取不到session的值。我目前的解决办法是:
Global.asax.cs中:
/// <summary>
/// 解决uploadif上传无法获取Cookie的情况
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_BeginRequest(object sender, EventArgs e)
{
try
{
HttpRequest request = HttpContext.Current.Request;
foreach (string k in request.Form.Keys)
{
if (k.IndexOf("cookie_") >= )
AppendingCookies(k.Remove(, ), request.Form[k], request);
}
}
catch { }
}
private void AppendingCookies(string cookieName, string cookieValue, HttpRequest request)
{
HttpCookie hc = request.Cookies.Get(cookieName);
if (null == hc)
hc = new HttpCookie(cookieName);
hc.Value = cookieValue;
request.Cookies.Set(hc);
}
上传方法:
[HttpPost]
public JsonResult Upload(HttpPostedFileBase fileData)
{
string cookie_LoginUserKey = Request.Form["cookie_LoginUserKey"];
if (realCookie != cookie_LoginUserKey)
{
return Json("上传失败");
} if (fileData != null)
{
try
{
string CompanyId = ManageProvider.Provider.Current().CompanyId;
Sys_Company model = companybll.GetEntity(CompanyId);
string CompanyCode = model.Code;
string folder = DateTime.Now.ToString("yyyyMM");
// 文件上传后的保存路径
string filePath = Server.MapPath("~/Uploads/" + CompanyCode + "/Web/" + folder + "/");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
} string fileName = Path.GetFileName(fileData.FileName);// 原始文件名称
string fileExtension = Path.GetExtension(fileName); // 文件扩展名
string saveName = Guid.NewGuid().ToString() + fileExtension; // 保存文件名称
int filesize = fileData.ContentLength / ;
if (filesize > || filesize <= || (fileExtension != ".jpg" && fileExtension != ".png" && fileExtension != ".gif"))
{
return Json(new { Success = false, Message = "上传失败!\r请上传jpg/png格式图片,文件大小不要超过2MB" }, JsonRequestBehavior.AllowGet); }
else
{
fileData.SaveAs(filePath + saveName);
return Json(new { Success = true, FilePath = "/Uploads/" + CompanyCode + "/Web/" + folder +"/"+ saveName, SaveName = saveName });
} }
catch (Exception ex)
{
return Json(new { Success = false, Message = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
else
{
return Json(new { Success = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet);
}
}
视图中:
$(document).ready(function () {
$('#file_upload').uploadify({
uploader: '/School/Sites/Upload',
swf: '/Content/Scripts/uploadify3.2.1/uploadify.swf',
buttonText: "请选择上传图片",
height: 24,
width: 120,
'fileExt': '*.jpg;*.gif,*.png', //允许上传的文件格式为*.jpg,*.gif,*.png
//'fileDesc': 'Web Image Files(.JPG,.GIF,.PNG)', //过滤掉除了*.jpg,*.gif,*.png的文件
//'queueID': 'fileQueue',
'sizeLimit': '2048000', //最大允许的文件大小为2M
//'auto': false, //需要手动的提交申请
'multi': false, //一次只允许上传一张图片
formData: { @foreach(string k in Request.Cookies.AllKeys)
{
@:'cookie_@(k)' : '@Request.Cookies[k].Value',
}
'': ''
}, 'onUploadSuccess': function (file, data, response) {
var obj = jQuery.parseJSON(data); //把返回的Json序列转化为obj对象
if (obj.Success) {
//alert(obj.FilePath);
$('#PictureUrl').val(obj.FilePath);
$('#pic').attr("src", obj.FilePath); $('#pic').show();
}
else
alert(obj.Message);
}
});
});
MVC中使用jquery uploadify上传图片报302错误的更多相关文章
-
在php中使用jquery uploadify进行多图片上传
jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadi ...
-
asp.net mvc中使用jquery H5省市县三级地区选择控件
地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...
-
如何快速解决myeclipse中导入jquery文件的报错。
如何快速解决myeclipse中导入jquery文件的报错. 解决: 选中错误的文件, 点击右键, 选中myeclipse,点击Exclude From Validation.
-
[转]如何在.NET MVC中使用jQuery并返回JSON数据
本文转自:http://blog.sina.com.cn/s/blog_48e42dc90100xp1p.html 二.开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目 ...
-
dedecms织梦网站图片集上传图片出现302错误图片提示怎么解决 已测
时间:2016-01-20 来源:未知 作者:模板之家 阅读:次 小编今天上传织梦网站模板的时候,在图片集里面选择上传图片的时候,弹出302错误提示,当是真的是郁闷了,试了好几次,开始还以为是图片过大 ...
-
使用ueditor中的setContent() 时经常报innerHtml错误(笔记)
1)今天遇到个问题,使用ueditor中的setContent() 时经常报innerHtml错误:网上找了下解决方案:发现这个可以用: 不能创建editor之后马上使用ueditor.setCont ...
-
asp.net mvc 2.o 中使用JQuery.uploadify
From:http://www.cnblogs.com/strugglesMen/archive/2011/07/01/2095916.html 官方网站http://www.uploadify.co ...
-
MVC 4 结合jquery.uploadify 上传实例
前言:由于今天公司源代码服务瘫痪,没法编写代码,利用这个有限的时间,做了一个小小的 基于MVC的图片上传demo,貌似近些年来MVC十分火爆,相关的demo也数不胜数,小弟就在这里打着MVC的旗子,狐 ...
-
关于Eclipse项目中加入jquery.js文件报错(missing semicolon)问题
在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员 ...
随机推荐
-
js获取url的常用方法
//设置或获取对象指定的文件名或路径. console.log(window.location.pathname) //设置或获取整个 URL 为字符串. console.log(window.loc ...
-
Businessworks的设计思想
Businessworks的设计思想基于一下三篇ATA: <从Eclipse平台看交易平台化>,强调微内核和扩展机制实现 <Google Guice平台模块化开发的果汁>,讨论 ...
-
CSE(Corrupted State Exceptions) 严重异常处理办法
原因分析 出现这个问题说明.NET版本至少是4.0,因为微软在.NET 4.0版本中更改了异常处理机制.微软认为catch(Exception)这种写法是不负责任的,程序员应该按照异常严重类别决定程序 ...
-
nginx 3.nginx+fastcgi
死磕nginx 3.nginx+fastcgi 互联网服务器有个非常典型的架构lamp(linux+apache+mysql+php),由于其开源和强大的兼容性而风靡一时,不过随着nginx的横空出世 ...
-
C++内存分配的五种方法
在C++中,内存分成5个区,他们分别是堆.栈.*存储区.全局/静态存储区和常量存储区. 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数 ...
-
1--OC -- HelloWorld
一.点击Xcode,选择“Create a new Xcode project” 二.左边选择“OS X Application”,右边选择“Command Line Tool”,Next 三.输 ...
-
hdu 4123 树的最长路+RMQ
Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
-
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋. 一. 技术 ...
-
as报错
android studio报错报错一:Could not HEAD 'https://dl.google.com/dl/android/maven2/com/android/tools/build/ ...
-
gerrit设置非小组成员禁止下载代码
对gerrit有所了解的同学,都知道gerrit 是我们常用的一个来做代码审核的工具,其中的权限管理,是一个非常重要的环节,关于每个权限的使用范围,可以参考博客https://blog.csdn.ne ...