• 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 = "上传失败!
    请上传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,
                 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);
                }
            });
        });
  • 相关阅读:
    人工智能第三课:数据科学中的Python
    人工智能第二课:认知服务和机器人框架探秘
    人工智能第一课:使用分类算法预测糖尿病
    如何加入Microsoft Teams 技术社区
    Python在Office 365 开发中的应用
    《Office 365开发入门指南》上市说明和读者服务
    基于Microsoft Graph打造自己的Timeline应用
    Office 365 应用开发的 .NET Core 模板库
    拥抱开源,Office 365开发迎来新时代
    Excel as a Service —— Excel 开发居然可以这么玩
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/5856232.html
Copyright © 2020-2023  润新知