Domanda

Ho appena iniziato a utilizzare Uploadify plug in flash al posto di standard di interfaccia utente HTML.
E ha incontrato il problema successivo:
quando clicco collegamento "Carica file", è dimostrato che il progresso e "a termine" è apparso lo stato, ma in realtà - non ha successo nulla, Java Servlet non è chiamato dal backend
C'è caricare servlet e il caricamento eseguito modo seguente prima :

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

Dopo aver fornito Uploadify plug-in, interfaccia utente oggi si presenta come:

Plugin parte (configurazione):

    <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>
parametro

'script' qui indica Java Servlet sul backend

<%= decodedString %> è il percorso della cartella, il cui valore è \\ di file-SRV \ demo

parte per il caricamento:

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

Dove è la mia colpa?

param 'Script' nel plugin di punti di configurazione di Java Servlet sul back-end ed è fatta, ma Servlet non viene attivato.

errore, quando param 'script' non è corretto: http: //img190.imageshack .us / i / errormm.png /

Grazie per l'assistenza.

È stato utile?

Soluzione

Questo può avere un sacco di possibili cause (vedi anche i commenti che ho postato).

  • JS esterno non viene caricato.
  • JS codice è sintatticamente / logicamente valido.
  • URL di richiesta non è valido.
  • Servlet non è mappata a tutti.
  • Servlet è mappato su url-pattern sbagliata.
  • Servlet non è stato avviato / init.

E 'difficile naildown la causa principale in base alle informazioni fino data.

Come lei ha ricordato che non avete visto alcuna richiesta di stato sparato nella scheda "Rete" di Firebug, penso che il codice JS è semplicemente sintatticamente / logicamente valido. Pagina Rightclick e DoubleVerify generato il codice JS / stampata.

Aggiornamento: Ho cercato di riprodurre il problema

.
  1. Ho scaricato il jquery.uploadify-v2.1.0 (MIT ) , estratto e mettere l'intero contenuto nella cartella /WebContent/uploadify del mio (vuoto) progetto web parco giochi in Eclipse.

  2. Ho creato un file /WebContent/upload.jsp nel seguente modo:

    <!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. Ho creato un com.example.UploadServlet come segue, con poco aiuto di Apache Commons FileUpload (appena messo < 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 e commons-io-1.4.jar in /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. Mi sono registrato com.example.UploadServlet in web.xml come segue:

    <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. ho schierato il progetto, avviato il server, è andato a http: // localhost: 8080 / parco giochi / upload.jsp , selezionato un file di grandi dimensioni a caso dalla mia cartella di download, cliccato il link Upload, vedere il contatore percentuale di upload in crescita a 100% e ho finalmente vedere quanto segue nella stdout:

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

Mi dispiace dire, non riesco a riprodurre il problema. Almeno, le informazioni di cui sopra dovrebbe aiutare a iniziare "fresco". Speranza che aiuta.

Aggiornamento: come per i commenti, il filtro si aspetta che esso utilizza la stessa sessione. Ok, si può fare questo abbastanza facile cambiando

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

a

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

Altri suggerimenti

ho avuto lo stesso problema esatto con uploadify 2.1.4. Ho suonato in giro con questo abbastanza a lungo per capire che sembra essere un problema con un percorso URI annidati, i.e. /folder1/folder2/folder3, etc. Appena ho cambiato il mio percorso per utilizzare il percorso di base (solo / folder1, o / uploadServlet come @BalusC stava usando) iniziò il file SWF l'invio dei dati al mio servlet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top