J'ai déjà présenté comment utiliser le plug-in de téléchargement jquery uploadify. J'ai rencontré le problème d'erreur Http Error 302 lors de l'utilisation. De nombreuses personnes auraient dû le rencontrer lors de l'utilisation. Je vais l'enregistrer ici :
.
Tout d'abord, http 302 signifie que la demande a été redirigée, ce qui est facile à comprendre. Si votre script de téléchargement de traitement uploadify dispose d'une vérification de session, cette erreur se produira car Flash n'inclut pas les informations sur les cookies lors de l'exécution de la demande de publication et le serveur. session obtiendra le SESSIONID en fonction du cookie du client. Naturellement, la session ne peut pas être obtenue sans soumettre le cookie, et uploadify renvoie une erreur 302 (demande redirigée).
Solution :
Transmettre la valeur de session_id au serveur :
<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>
Puis avant la vérification de la session côté serveur :
if (isset($_POST['session'])){ session_id($_POST['session']); session_start();//注意此函数要在session_id之后 }
Bien sûr, vous pouvez également transmettre directement l'identifiant de session dans l'URL, afin que l'erreur Http Error 302 puisse être résolue.
Extension du problème : L'erreur HTTPERROR 302 se produit également dans Firefox et Chrome normaux sous MVC en utilisant uploadify3.1 IE. Y a-t-il une solution ?
jquery uploadify peut télécharger normalement sous IE Lors de la mise en œuvre du téléchargement asynchrone, chaque fichier soumettra une demande au serveur lors du téléchargement. Chaque demande nécessite une vérification de sécurité, une vérification de session et de cookie. Oui, c'est ça. Étant donné que jquery uploadify utilise Flash pour implémenter le téléchargement, chaque fois qu'une demande de flux de données est envoyée en arrière-plan, IE regroupera automatiquement le stockage des cookies locaux et l'enverra au serveur. Mais Firefox et Chrome ne le feront pas, ils penseront que c'est dangereux.
Vous devez d'abord ajouter le contenu suivant à 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); }
Le code du plug-in de téléchargement de la page d'initialisation est le suivant
<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>
La recherche sur un problème peut être divergente et multiforme. Nous devons apprendre à tirer des conclusions à partir d'un exemple afin de pouvoir acquérir avec flexibilité des connaissances professionnelles et maîtriser des compétences professionnelles. J'espère que cela sera utile à l'apprentissage de chacun.