Il plugin Uploadify non chiama il servlet Java

Ho appena iniziato a utilizzare il plugin Flash di Uploadify invece dell’interfaccia utente standard HTML.
E ho incontrato il prossimo problema:

quando faccio clic sul link “Carica file”, viene mostrato lo stato di avanzamento e viene visualizzato lo stato “completato”, ma in realtà non è successo nulla, Java Servlet non viene chiamato dal back-end.

C’è il servlet di caricamento e il caricamento eseguiti in un modo precedente :

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

Dopo aver fornito il plugin Uploadify, l’interfaccia utente ora ha il seguente aspetto:

parte del plugin (configurazione):

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

il parametro ‘scripts’ qui indica Java Servlet su backend

è il percorso della cartella, il cui valore è \\ file-srv \ demo

parte per il caricamento:

  Upload Files 

Dov’è la mia colpa?

Il parametro ‘Script’ nel plugin config punta al servlet Java sul backend ed è fatto, ma Servlet non viene triggersto.

errore, quando il parametro ‘script’ non è corretto: http://sofit.miximages.com/servlets//

Grazie per l’assistenza.

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

  • JS esterno non caricato.
  • Il codice JS è sintatticamente / logicamente non valido.
  • L’URL della richiesta non è valido.
  • Servlet non è mappato affatto.
  • Servlet è mappato su url-pattern errato.
  • Servlet non è riuscito ad avviare / init.

È difficile inchiodare la causa principale sulla base delle informazioni fornite in modo completo.

Come hai detto che non hai visto alcuna richiesta di licenziamento nella scheda “Rete” di FireBug, penso che il codice JS sia semplicemente sintatticamente / logicamente non valido. Fai clic sulla pagina e duplica il codice JS generato / stampato.

Aggiornamento: ho provato a riprodurre il tuo problema.

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

  2. Ho creato un file /WebContent/upload.jsp come segue:

        Uploadify test        Upload   
  3. Ho creato un com.example.UploadServlet come segue con poco aiuto di Apache Commons FileUpload ( ho appena messo 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 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. Ho registrato com.example.UploadServlet in web.xml come segue:

      uploadServlet com.example.UploadServlet   uploadServlet /uploadServlet  
  5. Ho implementato il progetto, avviato il server, sono andato su http: // localhost: 8080 / playground / upload.jsp , selezionato un grosso file casuale dalla cartella dei miei download, cliccato sul link Upload , vedo il contatore percentuale di upload in crescita al 100% e Finalmente vedo quanto segue nello stdout:

     UploadServlet invocato.  Ecco tutti i file caricati: 
     Nome: glassfish-v3-windows.exe
     Dimensione: 50402555
     Digitare: application / octet-stream
    

Mi dispiace dire che non posso riprodurre il tuo problema. Almeno, le informazioni di cui sopra dovrebbero aiutarti a iniziare “fresco”. Spero che sia d’aiuto.

Aggiornamento: come da commenti, il filtro si aspetta che stia usando la stessa sessione. Ok, puoi farlo abbastanza facilmente cambiando

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

a

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

Stavo avendo lo stesso identico problema con uploadify 2.1.4. Ho giocato con questo abbastanza a lungo per capire che sembra essere un problema con un percorso URI nidificato, ie /folder1/folder2/folder3, etc. Non appena ho cambiato il mio percorso per usare il percorso di base (solo / folder1, o / uploadServlet come @BalusC stava usando) il file SWF ha iniziato a inviare dati al mio servlet.