Question

Je viens de commencer à utiliser le plugin flash Uploadify au lieu de l'interface utilisateur HTML standard.
Et rencontré le problème suivant:
lorsque je clique sur le lien « Ajouter des fichiers », que des progrès est montré et statut « liquidé » est apparu, mais en réalité - il n'a pas passé quoi que ce soit, Java Servlet n'est pas appelé de back-end
Il y a servlet de téléchargement et le téléchargement effectué façon suivante plus tôt :

< form enctype="multipart/form-data" method="post" target="uploadFrame"
action="<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}">...

Après avoir fourni le plugin Uploadify, interface utilisateur maintenant ressemble à:

une partie d'extension (configuration)

    <script>
...  
         oScript.text+= "$j('#uploadify').uploadify({";
      oScript.text+= "'uploader' : 'kne-portlets/js/lib/uploadify/scripts/uploadify.swf',";
      oScript.text+= "'script'   : '<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";
      oScript.text+= "'cancelImg': 'kne-portlets/js/lib/uploadify/cancel.png',";
      oScript.text+= "'folder'   : '<%= decodedString %>',";
      oScript.text+= "'queueID'  : 'fileQueue',";
      oScript.text+= "'auto'     : false,";
      oScript.text+= "'multi'    : false,";
      //oScript.text+= "'sizeLimit' : 1000";
      oScript.text+= "});";
      oScript.text+= "});"; 
...   
</script>

paramètre 'scripts de points ici pour Java Servlet sur backend

<%= decodedString %> est le chemin du dossier, dont la valeur est \\ fichier srv \ demo

partie pour le téléchargement:

<input type="file" name="uploadify" id="uploadify" />
<a href="javascript:$j('#uploadify').uploadifyUpload();">Upload Files</a>

Où est ma faute?

param 'Script' dans le plugin points de configuration pour Java Servlet sur backend et il est fait, mais Servlet ne se déclenche pas.

erreur, quand param 'script' est pas correct: http: //img190.imageshack .us / i / errormm.png /

Nous vous remercions de l'aide.

Était-ce utile?

La solution

Cela peut avoir beaucoup de causes possibles (voir aussi les commentaires que j'ai posté).

  • externe JS n'est pas chargé.
  • JS code est syntaxiquement / logiquement non valide.
  • URL de demande est non valide.
  • Servlet n'est pas du tout mis en correspondance.
  • Servlet est mis en correspondance sur le mauvais url-pattern.
  • Servlet n'a pas pu démarrer / init.

Il est difficile de Naildown la cause racine sur la base des informations en ce donné.

Comme vous l'avez dit que vous ne voyez pas de demande avait été tiré dans l'onglet « Net » de Firebug, je pense que le code JS est tout simplement syntaxiquement / logiquement invalide. Page Rightclick et DoubleVerify code généré / imprimé JS.

Mise à jour: J'ai essayé de reproduire votre problème

.
  1. jquery.uploadify-v2.1.0 (MIT ) , extrait et mettre le contenu dans le dossier de mon /WebContent/uploadify (vide) projet web de jeux dans Eclipse.

  2. J'ai créé un fichier /WebContent/upload.jsp comme suit:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>Uploadify test</title>
            <script src="uploadify/jquery-1.3.2.min.js"></script>
            <script src="uploadify/swfobject.js"></script>
            <script src="uploadify/jquery.uploadify.v2.1.0.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() {
                    $('#uploadify').uploadify({
                        'uploader': 'uploadify/uploadify.swf',
                        'script': 'uploadServlet',
                        'folder': '/uploads',
                        'cancelImg': 'uploadify/cancel.png'
                    });
                    $('#upload').click(function() {
                        $('#uploadify').uploadifyUpload();
                        return false;
                    });
                });
            </script>
        </head>
        <body>
            <input id="uploadify" type="file">
            <a id="upload" href="#">Upload</a>
        </body>
    </html>
    
  3. J'ai créé un com.example.UploadServlet comme suit avec peu d'aide de Apache Commons FileUpload (juste placé < a href = "http://mirrors.kahuki.com/apache/commons/fileupload/binaries/commons-fileupload-1.2.1-bin.zip" rel = "noreferrer"> commons-fileupload-1.2.1.jar et commons-io-1.4.jar dans /WEB-INF/lib):

    package com.example;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    public class UploadServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
        {
            System.out.println("UploadServlet invoked. Here are all uploaded files: ");
            try {
                List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                for (FileItem item : items) {
                    if (!item.isFormField()) {
                        System.out.println("Name: " + item.getName());
                        System.out.println("Size: " + item.getSize());
                        System.out.println("Type: " + item.getContentType());
                    }
                }
            } catch (Exception e) {
                throw new ServletException(e);
            }
        }
    }
    
  4. Je me suis inscrit dans com.example.UploadServlet web.xml comme suit:

    <servlet>
        <servlet-name>uploadServlet</servlet-name>
        <servlet-class>com.example.UploadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>uploadServlet</servlet-name>
        <url-pattern>/uploadServlet</url-pattern>        
    </servlet-mapping>
    
  5. Je le projet déployé, a commencé le serveur, est allé à http: // localhost: 8080 / aire de jeux / upload.jsp , sélectionnez un fichier grand hasard dans mon dossier téléchargements, cliqué sur le lien Upload, voir le compteur de pourcentage de téléchargement de plus en plus à 100% et je vois enfin ce qui suit dans le stdout:

    UploadServlet invoked. Here are all uploaded files: 
    Name: glassfish-v3-windows.exe
    Size: 50402555
    Type: application/octet-stream
    

Je suis désolé de le dire, je ne peux pas reproduire votre problème. Au moins, les informations ci-dessus devrait vous aider à démarrer « fraîchement ». Espérons que cela aide.

Mise à jour: selon les commentaires, le filtre s'attend à ce qu'il utilise la même session. Ok, vous pouvez le faire assez facilement en changeant

'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";

à

'<%= request.getContextPath() %>/uploadFile;jsessionid=${pageContext.session.id}?portletId=${portletId}&remoteFolder=<%= decodedString %>',";

Autres conseils

J'avais exactement le même problème avec Uploadify 2.1.4. J'ai joué avec ce assez longtemps pour comprendre qu'il semble être un problème avec un chemin URI imbriqué, i.e. /folder1/folder2/folder3, etc. Dès que je l'ai changé mon chemin pour utiliser le chemin de base (juste / folder1 ou / UploadServlet comme @BalusC utilisait) le fichier SWF a commencé à envoyer des données à mon servlet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top