MVC中使用jquery uploadify上传图片报302错误

使用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_") >= 0)
                        AppendingCookies(k.Remove(0, 7), 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 / 1024;
                    if (filesize > 1024 || filesize <= 2 || (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)
                {
                    @:‘[email protected](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);
            }
        });
    });
时间: 2024-10-12 08:34:49

MVC中使用jquery uploadify上传图片报302错误的相关文章

在php中使用jquery uploadify进行多图片上传

jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadify插件的批量上传图片功能. 本文是以dilicms为基础,为其增加图片上传功能. 1.增加数据表dili_fieldtypes新字段:k=>image,V=>图片上传区域(VACHAR): 2.修改application/libraries/dili/Field_behavior.php,在sw

asp.net mvc中使用jquery H5省市县三级地区选择控件

地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp.net mvc中使用jquery H5省市县三级地区选择控件及中国省市县标准地区库下载地址 咨询QQ:806693619 一.实现原理 一般常用输入控件是input,当点击input的时候执行jquery获取焦点事情,然后弹出本地区选择插件,选择完地区后点击确定将选择的值返回给input完成地区输入

解决asp.net mvc中*.resx资源文件访问报错

个人笔记 问题重现 在asp.net mvc中,使用资源文件会出现一个问题,例如: 紧接着我进入视图界面,输入下面代码: 1 <a href="javascript:void(0);">测试@KuaiLeYouNi.Web.AppResource.Space</a> 以上编译不会报错,但是运行是会报错:“编译器错误消息: CS0122: “KuaiLeYouNi.Web.AppResource”不可访问,因为它受保护级别限制” 问题解决 原来资源文件默认的访问修

Eclipse项目中加入jquery.js文件报错(missing semicolon)问题

在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员的心情,看这总是很不爽,怎么样才能解决呢. 很简单,首先我们先分析下造成这种情况的原因,如果你是个心细的人,去研究一下项目中的.project文件,你会发现有这样一段代码,如下:   节点下的这些代码,你会发现第一个有个org.eclipse.wst.jsdt.core.javascriptVali

MVC 中引入Jquery文件的几种方法

方法1: <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")" type="text/javascript"></script> @Url.Content可以获取到项目的绝对路径,将jquery-1.9.1.js文件放入到Scripts文件夹下,即可以在cshtml中引用jquery了. 方法2: <script src="../../Scripts

virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行update语句将其置换,依然不行.后来发现是因为mysql的默认配置文件/etc/mysql/my.cnf 中有一行: bind-address            = 127.0.0.1 就是说,默认绑定了ip,只限本机访问.将本行加#注释掉,远程访问正常.

Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息

客户要求用身份证图片上传获取身份证的详细信息就下来研究了一下(现在的客户真的懒 身份证信息都懒得输入了哈哈...),经过慢慢研究,果然皇天不负有心人搞出来了.这个借助的是腾讯的一个SKD  腾讯优图云人脸服务TencentYoutuYun.SDK.Csharp 这个DLL文件从github下载dll文件,并添加到你项目引用里,本sdk依赖Newtonsoft.Json,也需一起引用. 1.主要用到里面的一个封装类:OCR,现在来看一下里面的参数信息 PlanRegGuest_OCR这个类就封装了

ASP.NET MVC中使用jQuery时的浏览器缓存问题

介绍 虽然jQuery在浏览器ajax调用的时候对缓存提供了非常好的支持,还是有必要了解一下怎样高效地使用http协议. 首先要做的事情是在server端支持HTTP GET,定义不同的URL输出不同的数据(MVC里相应的就是action). 假设要使用同一个地址获取不同的数据,那就不正确了.一个HTTP POST也不行由于POST不能被缓存.很多开发者使用POST主要有2个原因:明白了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候能够被入侵). 缓存解释 jQuery全局对象里

在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点

使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现. Model先行: public class Article { public int Id { get; set; } public string Url { get; set; } } 在HomeController中的Index方法,向视图传递一个Article强类型. public class HomeController : Controller { public ActionResult Ind