解决jQuery上传插件Uploadify出现Http Error 302错误的方法_jquery

之前介绍过jquery uploadify上传插件的使用方法,我在使用中遇到过Http Error 302错误问题,应该会有很多人在使用中遇到过,在此记录下来:
首先http 302是请求被重定向的意思,这就很容易理解了,如果你的uploadify处理上传脚本有session验证,就会出现此错误,因为flash在执行post请求的时候没有包含cookie信息,而服务器的session会根据客户端的cookie来得到SESSIONID。没有提交cookie自然就不能获取到session,然后uploadify就返回了302(请求被重定向)的错误。
解决办法:

把session_id的值传到服务端:

<script>
$(document).ready(function() {
   $('#file_upload').uploadify({
    'uploader' : 'uploadify/uploadify.swf',
    'script'  : 'uploadify.php',
    'folder'  : 'uploads/file',
    'formData': { 'session': '<?php echo session_id();?>'},
    'onComplete' : function(event, ID, fileObj, response, data) {
     alert(response);
    }
   });
});
</script>

然后在服务器端session验证之前:

if (isset($_POST['session'])){
  session_id($_POST['session']);
  session_start();//注意此函数要在session_id之后
}

当然,你也可以直接在url中将session id传过去,这样Http Error 302错误就可以得到解决。

问题扩展:MVC使用uploadify3.1 IE下正常firefox、chrome也出现HTTPERROR 302错误,有什么解决办法?

jquery uploadify在ie下可以正常上传,在实现异步上传的时候,每一个文件在上传时都会提交给服务器一个请求。每个请求都需要安全验证,session 和cookie的校验。是的,就是这样。由于jquery uploadify是借助flash来实现上传的,每一次向后台发送数据流请求时,ie会自动把本地cookie存储捆绑在一起发送给服务器。但 firefox、chrome不会这样做,他们会认为这样不安全。

首先需要对global.asxa添加如下内容

protected void Application_BeginRequest(object sender, EventArgs e)
    {
      /* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */
      try
      {
        string session_param_name = "ASPSESSID";
        string session_cookie_name = "ASP.NET_SessionId";

        if (HttpContext.Current.Request.Form[session_param_name] != null)
        {
          UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);
        }
        else if (HttpContext.Current.Request.QueryString[session_param_name] != null)
        {
          UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString[session_param_name]);
        }
      }
      catch
      {
      }

      try
      {
        string auth_param_name = "AUTHID";
        string auth_cookie_name = FormsAuthentication.FormsCookieName;

        if (HttpContext.Current.Request.Form[auth_param_name] != null)
        {
          UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);
        }
        else if (HttpContext.Current.Request.QueryString[auth_param_name] != null)
        {
          UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[auth_param_name]);
        }

      }
      catch
      {
      }
    }

    private void UpdateCookie(string cookie_name, string cookie_value)
    {
      HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
      if (null == cookie)
      {
        cookie = new HttpCookie(cookie_name);
      }
      cookie.Value = cookie_value;
      HttpContext.Current.Request.Cookies.Set(cookie);
    }

初始化页面上传插件代码如下

<script type="text/javascript">
    var auth = "@(Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value)";
    var ASPSESSID = "@Session.SessionID";

    $(function () {
      $('#upload').uploadify({
        'formData': { 'folder': '/Upload', 'ASPSESSID': ASPSESSID, 'AUTHID': auth },
        'buttonText': '浏览',
        'buttonClass': 'browser',
        'fileSizeLimit' : '100KB',
        'fileTypeExts': '*.xls;*.xlsx',
        'removeCompleted': false,
        'swf': '@Url.Content("~/Scripts/Uploadify/uploadify.swf")',
        'uploader': '/Upload',
        'onUploadSuccess': function (file, data, response) {}
      });
    });
  </script>

 一个问题的研究可以是发散性的是多方面,我们要学会举一反三,这样才能灵活的学习专业知识,掌握专业技能,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, uploadify
302错误
jquery uploadify 302、uploadify error 302、上传http error302、上传图片 error 302、uploadify 302,以便于您获取更多的相关知识。

时间: 2024-10-26 20:25:23

解决jQuery上传插件Uploadify出现Http Error 302错误的方法_jquery的相关文章

解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法_php技巧

最近用ThinkPHP开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示这个错误,网上找了很多解决办法,基本都说flash在firefox下重新发起session会话,由于session没有验证通过所以报错,这个问题网上有很多解决方案,但是试了很多,都没有真正解决我的问题,最后看了官方的解决方案 http://www.uploadify.com/documentation/uploadify/using-sessions-with-up

JQuery上传插件Uploadify使用详解及错误处理_jquery

什么是Uploadify Uploadify是JQuery的一个上传插件,支持多文件上传,实现的效果非常不错,带进度显示. 官网提供的是PHP的DEMO,在这里我详细介绍在Asp.net下的使用. 下载 官方下载 官方文档 官方演示 提供的Uploadify下载地址 如何使用 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中 2 在项目中添加UploadHandler.ashx文件用来处理文件的上传. 3 在项目中添加UploadFile文件夹

AspNet中使用JQuery上传插件Uploadify详解

  Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用 首先按下面的步骤来实现一个简单的上传功能. 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中. 2 在项目中添加UploadHandler.ashx文件用来处理文件的上传. 3 在项目中添加UploadFile文件夹,用来存放上传的文件. 进行完上面三步后项目的基本结构如下

AspNet中使用JQuery上传插件Uploadify详解_jquery

首先按下面的步骤来实现一个简单的上传功能. 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中. 2 在项目中添加UploadHandler.ashx文件用来处理文件的上传. 3 在项目中添加UploadFile文件夹,用来存放上传的文件. 进行完上面三步后项目的基本结构如下图: 4 Default.aspx的html页的代码修改如下: <html xmlns="http://www.w3.org/1999/xhtml">

基于JQuery上传插件Uploadify+php使用详解

如何使用 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中 2 在项目中添加UploadHandler.ashx文件用来处理文件的上传. 3 在项目中添加UploadFile文件夹,用来存放上传的文件. 进行完上面三步后项目的基本结构如下图: 4 Default.aspx的html页的代码修改如下:  代码如下 复制代码 <html xmlns="http://www.w3.org/1999/xhtml"> <hea

Jquery上传插件Uploadify无刷新上传文件

Uploadify v3.2.1  上传图片并预览 前端JSP: <script type="text/javascript">                             $(function() {                 $("#upload_org_code").uploadify({                     'height'        : 27,                      'width' 

Jquery上传插件 uploadify v3.1使用说明_jquery

官方地址:http://www.uploadify.com/ 提供的下载地址:http://www.jb51.net/jiaoben/21484.html 官方英文文档:http://www.uploadify.com/documentation/ 使用方法(.net版本): 前台JS 复制代码 代码如下: $("#id").uploadify({ height: 30, swf: '/uploadify/uploadify.swf', uploader: '/Handler/uplo

集成环信easeUI之后上传api文件时出现 “error itms-90535 ”错误

问题描述 集成环信easeUI之后上传api文件时出现 "error itms-90535 "错误 解决方案 把EaseUIResource.bundle中的Info.plist文件删除就可以了

基于jQuery的Web上传插件Uploadify使用示例_jquery

Uploadify是一款功能强大,高度可定制的文件上传插件,实现的效果非常不错,带进度显示.在最简单的方式下,Uploadify使用很少的代码就可以运行起来. Uploadify官方下载地址:http://www.uploadify.com/download/ 测试例子以下是一个使用的简单例子: 这里我们采用了Uploadify包中自带的php测试脚本作为上传的处理,所以这里安装了wamp作为php的测试环境,在php的网站根目录中,解压上面下载好的Uploadify文件,并创建一个文件上传保存