Heim > Web-Frontend > js-Tutorial > Hauptteil

So beheben Sie den Fehler Http Error 302 im jQuery-Upload-Plug-in Uploadify_jquery

WBOY
Freigeben: 2016-05-16 15:24:48
Original
1915 Leute haben es durchsucht

Ich habe schon einmal erklärt, wie man das Upload-Plug-in von jquery verwendet. Ich bin bei der Verwendung auf das Fehlerproblem „Http Error 302“ gestoßen. Ich werde es hier aufzeichnen Erstens bedeutet http 302, dass die Anfrage umgeleitet wurde, was leicht zu verstehen ist. Wenn Ihr Upload-Upload-Skript über eine Sitzungsüberprüfung verfügt, tritt dieser Fehler auf, weil Flash beim Ausführen der Post-Anfrage keine Cookie-Informationen enthält und der Server Die Sitzung erhält die SESSIONID basierend auf dem Cookie des Clients. Natürlich kann die Sitzung nicht ohne Übermittlung des Cookies abgerufen werden, und uploadify gibt einen Fehler 302 (Anfrage umgeleitet) zurück.

Lösung:

Übertragen Sie den Wert von session_id an den Server:


<script>
$(document).ready(function() { 
   $('#file_upload').uploadify({ 
    'uploader' : 'uploadify/uploadify.swf', 
    'script'  : 'uploadify.php',
    'folder'  : 'uploads/file', 
    'formData': { 'session': '<&#63;php echo session_id();&#63;>'}, 
    'onComplete' : function(event, ID, fileObj, response, data) { 
     alert(response); 
    } 
   }); 
}); 
</script>
Nach dem Login kopieren
Dann vor der serverseitigen Sitzungsüberprüfung:


if (isset($_POST['session'])){ 
  session_id($_POST['session']); 
  session_start();//注意此函数要在session_id之后 
} 
Nach dem Login kopieren
Natürlich können Sie die Sitzungs-ID auch direkt in der URL übergeben, damit der Fehler Http Error 302 behoben werden kann.

Erweiterung des Problems: HTTPERROR 302-Fehler tritt auch in normalem Firefox und Chrome unter MVC mit uploadify3.1 IE auf. Gibt es eine Lösung?

jquery uploadify kann im IE normal hochgeladen werden. Bei der Implementierung des asynchronen Uploads sendet jede Datei beim Hochladen eine Anfrage an den Server. Jede Anfrage erfordert eine Sicherheitsüberprüfung, Sitzungs- und Cookie-Überprüfung. Ja, das ist es. Da jquery uploadify Flash zum Implementieren des Hochladens verwendet, bündelt der IE jedes Mal, wenn eine Datenflussanforderung an den Hintergrund gesendet wird, automatisch den lokalen Cookie-Speicher und sendet ihn an den Server. Aber Firefox und Chrome werden dies nicht tun, sie werden denken, dass es unsicher ist.

Zuerst müssen Sie den folgenden Inhalt zu global.asxa hinzufügen


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);
    }
Nach dem Login kopieren
Der Plugin-Code für das Hochladen der Initialisierungsseite lautet wie folgt


<script type="text/javascript">
    var auth = "@(Request.Cookies[FormsAuthentication.FormsCookieName]==null &#63; 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>

Nach dem Login kopieren
Die Forschung zu einem Problem kann unterschiedlich und vielschichtig sein. Wir müssen lernen, aus einem Beispiel Schlussfolgerungen zu ziehen, damit wir uns flexibel Fachwissen aneignen und Fachkompetenzen aneignen können.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!