2010-03-04 7 views
2

Je suis en train d'utiliser Uploadify dans un projet ASP.NET WebForms. Le problème est que mon script n'appelle pas le gestionnaire générique. Voici le script.Uploadify ne fonctionne pas avec ASP.NET WebForms

<input id="fileInput" name="fileInput" type="file" /> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#fileInput').uploadify({ 
     'uploader': '/Ferramenta/Comum/Uploadify/uploadify.swf', 
     'script': 'UploadTest.ashx', 
     'cancelImg': '/Ferramenta/Comum/Uploadify/cancel.png', 
     'folder': "/Ferramenta/Geral/", 
     'auto': true, 
     'onError': function(event, queueID, fileObj, errorObj) { 
      alert('error'); 
     }, 
     'onComplete': function(event, queueID, fileObj, response, data) { 
      alert('complete'); 
     }, 
     'buttonText' : 'Buscar Arquivos' 
    }); 
}); 
</script> 

Ceci est le code du gestionnaire générique (juste pour tester)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.IO; 

namespace Tree.Ferramenta.Geral 
{ 
    public class UploadTest : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.Write("1"); 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 
} 

Toutes les idées? Merci !

+1

http://trycatchfail.com/blog/post/2009/05/13/using-flash-with-aspnet-mvc-and-authentication.aspx –

Répondre

0

Parcourir directement à votre fichier .ashx, obtenez-vous des erreurs?

Télécharger Firebug, et vérifiez si vous recevez des erreurs javascript ainsi.

Vous pouvez également ajouter:

context.Response.ContentType = "text/plain"; 
context.Response.StatusCode = 200; 
+0

Jack, pas d'erreur quand je parcours directement le fichier ashx. Pas d'erreurs sur firebug. J'ai ajouté le code que vous avez envoyé, mais ne fonctionne toujours pas. Je télécharge (http://gyoshev.net/temp/stackoverflow/Uploadify.zip) le code d'Alexander Gyoshev qu'il a posté sur cette question http://stackoverflow.com/questions/1327972/using-uploadify-with- sharepoint-and-net. Ça marche. Mais je n'ai toujours pas trouvé le problème sur mon projet. –

+0

Peut-être que votre chemin vers: 'script': 'UploadTest.ashx' est incorrect? –

+0

Jack, je suppose que non parce que les fichiers sont dans le même dossier. –

1

Avez-vous essayé le code sur IE et Firefox? Si vous obtenez seulement ce problème avec Firefox, essayez de créer un Global.asax avec le code suivant (je viens de le code VB.NET):

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) 
    '' Fix for the Flash Player Cookie bug in Non-IE browsers. 
    '' Since Flash Player always sends the IE cookies even in FireFox 
    '' we have to bypass the cookies by sending the values as part of the POST or GET 
    '' and overwrite the cookies with the passed in values. 

    '' The theory is that at this point (BeginRequest) the cookies have not been ready by 
    '' the Session and Authentication logic and if we update the cookies here we'll get our 
    '' Session and Authentication restored correctly 
    Try 
     Dim session_param_name As String = "ASPSESSID" 
     Dim session_cookie_name As String = "ASP.NET_SESSIONID" 

     If HttpContext.Current.Request.Form(session_param_name) IsNot Nothing Then 
      UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form(session_param_name)) 
     ElseIf HttpContext.Current.Request.QueryString(session_param_name) IsNot Nothing Then 
      UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString(session_param_name)) 
     End If 
    Catch ex As Exception 

    End Try 

    Try 
     Dim auth_param_name As String = "AUTHID" 
     Dim auth_cookie_name As String = FormsAuthentication.FormsCookieName 

     If HttpContext.Current.Request.Form(auth_param_name) IsNot Nothing Then 
      UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form(auth_param_name)) 
     ElseIf HttpContext.Current.Request.QueryString(auth_param_name) IsNot Nothing Then 
      UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString(auth_param_name)) 
     End If 
    Catch ex As Exception 

    End Try 
End Sub 

Private Sub UpdateCookie(ByVal cookie_name As String, ByVal cookie_value As String) 
    Dim cookie As HttpCookie = HttpContext.Current.Request.Cookies.Get(cookie_name) 

    If cookie Is Nothing Then 
     cookie = New HttpCookie(cookie_name) 
    End If 

    cookie.Value = cookie_value 
    HttpContext.Current.Request.Cookies.Set(cookie) 
End Sub 

Et puis appelez Uploadify comme ceci:

<input id="fileInput" name="fileInput" type="file" /> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    var AUTHID = '<%= IIf(Request.Cookies(FormsAuthentication.FormsCookieName) Is Nothing, String.Empty, Request.Cookies(FormsAuthentication.FormsCookieName).Value) %>'; 
    var ASPSESSID = '<%= Session.SessionID %>'; 
    $('#fileInput').uploadify({ 
     'uploader': '/Ferramenta/Comum/Uploadify/uploadify.swf', 
     'script': 'UploadTest.ashx', 
     'scriptData': { 'ASPSESSID': ASPSESSID, 'AUTHID': AUTHID }, 
     'cancelImg': '/Ferramenta/Comum/Uploadify/cancel.png', 
     'folder': "/Ferramenta/Geral/", 
     'auto': true, 
     'onError': function(event, queueID, fileObj, errorObj) { 
      alert('error'); 
     }, 
     'onComplete': function(event, queueID, fileObj, response, data) { 
      alert('complete'); 
     }, 
     'buttonText' : 'Buscar Arquivos' 
    }); 
}); 
</script> 
1

Vous pouvez vérifier si l'espace de noms pour la classe de gestionnaire (UploadTest.ashx) est le même dans le balisage et le code derrière - pour moi, ce fut la chose causant le même problème.

1

Mettez un point d'arrêt dans ProcessRequest .. t-il le feu?

Si le contenu de votre site est pas public, ajouter à l'accès web.config d'autorisation au gestionnaire, afin d'éviter HTTP Error

<location path="Upload.ashx"> 
    <system.web> 
    <authorization> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 
0

Est-ce votre site sur SSL? J'ai eu le même problème et il s'est avéré que c'était parce que j'avais un certificat invalide. Quelque chose à voir avec Flash enterrant une erreur si vous téléchargez un fichier avec un mauvais certificat.

Questions connexes