Frage

Ich habe gerade angefangen mit Uploadify Flash-Plugin anstelle von Standard-HTML-UI.
Und das nächste Problem erfüllt:
, wenn ich „Dateien hochladen“ -Link klicken, wird dieser Fortschritt gezeigt und „abgeschlossen“ -Status ist erschienen, aber in Wirklichkeit - es hat nichts passiert ist, Java Servlets nicht von Back-End-Namen
Es gibt Upload-Servlet und das Hochladen ausgeführt nächsten Weg früher :

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

Nach der Bereitstellung Uploadify Plugin, UI jetzt sieht aus wie:

Plugin Teil (Konfiguration):

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

'Skripten' Parameter hier verweist auf Java Servlets auf Back-End

<%= decodedString %> ist Ordnerpfad, der Wert ist \\ Datei-SRV \ demo

Teil für das Hochladen:

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

Wo ist meine Schuld?

'Script' param in Plugin Config verweist auf Java Servlet auf Back-End und es ist getan, aber Servlets nicht ausgelöst wird.

Fehler, wenn 'script' param ist nicht korrekt: http: //img190.imageshack .us / i / errormm.png /

Vielen Dank für Hilfe.

War es hilfreich?

Lösung

Dieses eine Menge möglicher Ursachen haben kann (auch die Ausführungen sehe ich geschrieben).

  • Externe JS ist nicht geladen.
  • JS-Code ist syntaktisch / logisch ungültig.
  • Anforderungs-URL ist ungültig.
  • Servlets ist überhaupt nicht abgebildet.
  • Servlets auf falsche url-pattern abgebildet wird.
  • Servlets nicht gestartet / init.

Es ist schwer, die Ursache auf der Grundlage der so weit gemachten Angaben Naildown.

Wie Sie erwähnten, dass Sie keine Anfrage in den „Net“ Reiter von FireBug abgefeuert worden sahen, glaube ich, dass der JS-Code einfach syntaktisch / logisch ungültig. Rechtsklick Seite und DoubleVerify erzeugt / gedruckt JS-Code.

Update:. Ich habe versucht, das Problem zu reproduzieren

  1. ich heruntergeladene jquery.uploadify-v2.1.0 (MIT ) , extrahiert sie und den gesamten Inhalt in der /WebContent/uploadify Ordner meiner (leer) Spielplatz Webprojekt in Eclipse setzen.

  2. Ich habe eine /WebContent/upload.jsp Datei wie folgt:

    <!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. habe ich ein com.example.UploadServlet wie folgt mit wenig Hilfe von Apache Commons Fileupload (nur platziert < 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 und 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. ich registriert com.example.UploadServlet in web.xml wie folgt:

    <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. I entfalteten das Projekt beginnt den Server, ging an http: // localhost: 8080 / Spielplatz / upload.jsp , eine zufällige große Datei von meinem Downloads ausgewählte Ordner, klickte den Upload Link finden Sie in den Upload-Prozentsatz Zähler auf 100% wachsen und ich folgend in der stdout endlich sehen:

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

Es tut mir leid zu sagen, ich kann Ihr Problem nicht reproduzieren. Zumindest sollten die oben genannten Informationen helfen Ihnen, „frisch“ zu beginnen. Hoffe, es hilft.

Update: nach den Kommentaren, die Filter davon aus, dass es die gleiche Sitzung verwendet. Ok, Sie können dies tun, recht einfach durch Ändern

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

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

Andere Tipps

Ich hatte genau das gleiche Problem mit Uploadify 2.1.4. Ich spielte mit diesem lange genug um, um herauszufinden, dass es scheint, ein Problem mit einem verschachtelten URI-Pfad zu sein, i.e. /folder1/folder2/folder3, etc. Sobald ich meinen Weg verändern den Basispfad zu verwenden (nur / folder1 oder / UploadServlet wie @BalusC wurde mit) die SWF-Datei begann Daten zu meinem Servlet zu senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top