2010-04-29 7 views
0

J'ai d'abord utilisé le composant FileUpload de primefaces et cela n'a pas fonctionné. Toujours donné "Erreur HTTP". J'ai donc pensé qu'il y avait un bug avec ce composant et que je suis allé à JQuery et j'ai essayé d'utiliser uploadify. Mais j'ai toujours la même erreur. J'utilise Container Managed Security. Est-ce la raison de ne pas fonctionner correctement?JQuery uploadify le plugin ne fonctionne pas

Ceci est mon script: -

$(document).ready(function(){ 
         $('#photoInput').uploadify({ 
         'script' : '/Blogger/fileUploadServlet', 
         'uploader' : './uploadify/uploadify.swf', 
         'cancelImg' : './uploadify/cancel.png', 
         'auto'  : true 
         }); 

MISE À JOUR

têtes de réponse:

 
X-Powered-By Servlet/3.0, JSF/2.0 Server GlassFish v3 
Set-Cookie JSESSIONID=a23a36b147ac171f8abbf64406cd; Path=/Blogger 
Content-Type text/html;charset=UTF-8 
Content-Length 1430 Date Thu, 29 Apr 2010 15:16:12 GMT 

têtes de demande

 
Host localhost:8080 User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 300 
Connection keep-alive 
Cookie username=laala; password=panchal; JSESSIONID=a029f59bed8ba0c22fb27a612bf2; treeForm:tree-hi=treeForm:tree:applications; JSESSIONID=962073f17f3d0ebb37536f789b90 Cache-Control max-age=0** 

Et ceci est mon servlet qui est jamais exécuté: -

package Servlets; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Iterator; 
import java.util.List; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.commons.fileupload.FileItemFactory; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 

@WebServlet(name = "fileUploadServlet", urlPatterns = {"/fileUploadServlet"}) 
public class fileUploadServlet extends HttpServlet { 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException, FileUploadException { 
     PrintWriter out = response.getWriter(); 
     try { 
      System.out.println("Executed!!"); 
      boolean isMultipart = ServletFileUpload.isMultipartContent(request); 

      // Create a factory for disk-based file items 
      FileItemFactory factory = new DiskFileItemFactory(); 

// Create a new file upload handler 
      ServletFileUpload upload = new ServletFileUpload(factory); 

// Parse the request 
      List /* FileItem */ items = upload.parseRequest(request); 

      Iterator e = items.iterator(); 
      while(e.hasNext()){ 
       System.out.println(e.next().toString()); 
      } 

     } finally { 
      out.close(); 
     } 
    } 
} 

         }); 
+0

Veuillez mettre à jour votre question pour inclure l'en-tête de réponse HTTP qui a renvoyé cette page et l'en-tête de la requête HTTP qui a été envoyé par uploadify. Vous pouvez utiliser firebug ou fiddler pour récupérer les en-têtes HTTP. – BalusC

+0

L'en-tête de demande est-il celui que vous téléchargez le fichier? Cela ne ressemble pas à celui-là. BTW: vous ne devriez vraiment pas stocker le nom d'utilisateur/mot de passe dans un cookie! Stockez-le dans la session côté serveur. – BalusC

+0

Non, j'ai rafraîchi la page et c'est ce que j'ai obtenu. Après avoir téléchargé le fichier. Comment puis-je obtenir l'en-tête de demande et de réponse? – TCM

Répondre

1

Puisque vous ne publiez pas les en-têtes requête HTTP/réponse, c'est un tir peu dans l'obscurité. Mais une cause commune est que la demande de téléchargement de fichier n'utilise pas la même session alors que cela est requis par l'application Web en question. Vous pouvez facilement repérer cela par un cookie manquant dans l'en-tête de la demande.

Pour résoudre ce problème, mettez à jour la ligne

'script': '/Blogger/fileUploadServlet', 

à

'script': '/Blogger/fileUploadServlet;jsessionid=${pageContext.session.id}', 

et une nouvelle tentative.

Mise à jour: L'URL relative peut être incorrecte. Quelle est l'URL absolue de la page JSF? Quelle est l'URL absolue du servlet de téléchargement? Vous devez en extraire la bonne URL relative. À l'heure actuelle, vous avez spécifié l'URL relative avec une barre oblique / afin qu'elle soit relative à la racine du domaine, c'est-à-dire qu'elle devienne absolument http://localhost:8080/Blogger/fileUploadServlet. Vous voudrez peut-être envisager de laisser cela de côté et réessayer avec une configuration vierge/petit terrain de jeu comme je l'ai souligné dans la partie "Mise à jour" de this answer et voir si cela fonctionne sans tous les autres facteurs éventuellement dérangeants.

+0

Salut Balusc, J'ai édité comme vous l'avez dit. Après avoir ajouté jsessionid je reçois toujours l'erreur.J'utilise Glassfish V3. Ai-je besoin de faire un réglage avant de pouvoir utiliser Flash avec Java? S'il vous plaît aidez-moi :( – TCM

+0

Déboguer le JS avec Firebug.Est-ce qu'il est exécuté correctement? Je suis plus intéressé par les en-têtes de demande envoyés par uploadify.Vous pouvez le trouver dans l'onglet 'Net' de Firebug.Avec vous utilisez JSF, ont vous vous êtes assuré que '$ ('# photoInput')' est l'ID d'élément correct, il ne doit pas être l'ID du composant JSF, mais l'ID client du composant HTML généré (page de droite, source de la vue) – BalusC

+0

Oui BalusC, photoInput est le clientId parce que j'ai défini prependId = false dans h: form.Egalement le composant obtient l'aspect et la convivialité de Jquery uploadify.Si l'ID n'a pas été correct, il n'aurait pas eu ce look and feel.Les en-têtes que je vous ai envoyé Je n'ai vu aucun en-tête une fois que je clique sur le bouton de navigation de uploadify et sélectionne le fichier Tout ce que je reçois est "HTTP - Error" Les en-têtes ne sont pas mis à jour dans l'onglet Net. à présent? – TCM

Questions connexes