Pregunta

i acaba de empezar a usar Uploadify plugin flash en lugar de la interfaz de usuario estándar HTML.
Y se reunió con el siguiente problema:
cuando haga clic en enlace "Subir archivos", se muestra que el progreso y "completado" se apareció el estado, pero en realidad - que no pasó nada, Java Servlet no se llama a partir de back-end
Hay servlet carga y carga realizado siguiente manera antes

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

Después de proporcionar Uploadify plugin, la interfaz de usuario ahora se parece a:

parte Plugin (configuración):

    <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>
parámetro

'scripts' aquí apunta a Java Servlet en el back-end

<%= decodedString %> es ruta de la carpeta, cuyo valor es \\ archivo-SRV \ demo

parte de la carga:

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

¿Dónde está mi culpa?

parámetro 'guión' en el plugin de puntos de configuración de Java Servlet en el backend y se hace, pero servlet no se activa.

error, cuando parámetro 'guión' no es correcto: http: //img190.imageshack .us / i / errormm.png /

Gracias por la ayuda.

¿Fue útil?

Solución

Esto puede tener muchas causas posibles (ver también los comentarios que he publicado).

  • JS externo no está cargado.
  • JS código es sintácticamente / lógicamente válido.
  • Solicitud de URL no es válida.
  • Servlet no se asigna a todos.
  • Servlet se mapea en url-pattern mal.
  • Servlet no se pudo iniciar / init.

Es difícil Naildown la causa en base a la información en la medida determinada.

Como se ha mencionado que usted no vio ninguna solicitud ha despedido en la pestaña "Red" de FireBug, creo que el código JS es simplemente sintácticamente / lógicamente válido. página rightclick y DoubleVerify código generado / JS impresa.

Actualización: I trató de reproducir su problema

.
  1. He descargado jquery.uploadify-v2.1.0 (MIT ) , extraída y poner todo el contenido de la carpeta /WebContent/uploadify de mi proyecto (vacío) parque web en Eclipse.

  2. He creado un archivo /WebContent/upload.jsp de la siguiente manera:

    <!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. He creado un com.example.UploadServlet de la siguiente manera con poca ayuda de Apache Commons FileUpload (acaba de colocar < 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 y commons-io-1.4.jar en /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. I registrado com.example.UploadServlet en web.xml como sigue:

    <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. desplegué el proyecto, iniciado el servidor, se fue a http: // localhost: 8080 / parque infantil / upload.jsp , seleccionado un archivo de gran tamaño al azar de mi carpeta de descargas, hace clic en el enlace Upload, ver el contador de porcentaje de carga cada vez mayor a 100% y finalmente ver lo siguiente en la salida estándar:

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

Lo siento decir, no puedo reproducir el problema. Por lo menos, la información anterior le ayudará a empezar "recientemente". Espero que ayuda.

Actualización: de acuerdo con los comentarios, el filtro de espera que está utilizando la misma sesión. Ok, puede hacerlo bastante fácil cambiando

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

a

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

Otros consejos

Yo estaba teniendo el mismo problema exacto con uploadify 2.1.4. He jugado un poco con esto el tiempo suficiente para darse cuenta de que parece ser un problema con una ruta URI anidado, i.e. /folder1/folder2/folder3, etc. Tan pronto como he cambiado de ruta a utilizar la ruta de la base (justo / carpeta1 o / UploadServlet como @BalusC estaba usando) el archivo SWF comenzó a enviar datos a mi servlet.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top