Datei-Upload und Konvertierung in bytes (mit JSP und servlet

Ich habe eine JSP-Seite und einem servlet.Die JSP hat zwei Eingaben, eine Datei und die andere ist eine text-Eingabe.Wenn der Benutzer klickt auf den SUBMIT-button das Form-action-Punkte, um Servlet ' s Post zu tun().In die Post() ich habe didvided der code in zwei Teil.Der eine Teil retrives die text-Eingabe und Datei-Namen aus der Jsp-Seite und die andere konvertiert die Datei in bytes.

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                    IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();

    //This is 1st part
    //For Converting the File into Stream of Bytes
    String contentType = request.getContentType();
    //System.out.println("Content type is :: " +contentType);

    if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
        DataInputStream in = new DataInputStream(request.getInputStream());
        int formDataLength = request.getContentLength();
        byte dataBytes[] = new byte[formDataLength];
        int byteRead = 0;
        int totalBytesRead = 0;
        int k = -1;
        while (totalBytesRead < formDataLength) {
            byteRead = in.read(dataBytes, totalBytesRead, formDataLength);

            totalBytesRead += byteRead;
            //System.out.println(dataBytes[++k]);

        }
        for (int i = 0; i < formDataLength; i++) {
            System.out.print((char)dataBytes[i]);

        }

        System.out.println("Converted");
        out.println("<HTML>");
        out.println("<HEAD>");
        out.println("</HEAD>");
        out.println("<BODY>");
        out.println("<H1>UPLOADED FILE</H1>");
        out.println("<BODY>");
        out.println("</HTML>");
    } else
        System.out.println("asa");


    //This is the 2nd part
    //Create a new file upload handler
    DiskFileUpload upload = new DiskFileUpload();

    //parse request
    List items = null;

    //get uploaded file
    try {
        items = upload.parseRequest(request);
    } catch (FileUploadException e) {
    }
    FileItem file = (FileItem)items.GET(1);
    String DocTitle = file.getName();

    int len = DocTitle.length(), pos = 0, j = 2;
    for (int i = 0; i < len; i++) {

        if (DocTitle.charAt(i) == 46) {
            pos = i;

        }

    }

    String s = DocTitle.substring(pos + 1, len);
    System.out.println("TheContent Type is: " + s);

    //get taget filename
    FileItem name = (FileItem)items.get(1);
    String fileName = name.getString();
    System.out.println("Filename: " + fileName + "." + s);

}

Das problem ist, wenn ich nur laufen, nur der 1. Teil oder 2. Teil der code funktioniert, ist aber gemeinsam, dass Sie nicht zu funktionieren scheint.Wenn beides zusammen dann den 1. Teil ausgeführt werden, und für den 2. Teil wirft es

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
bei java.util.ArrayList.RangeCheck(ArrayList.java:547)

Bitte helfen Sie mir zur Lösung der oben genannten

  • In der Ausnahme scheint es einige ArrayList-Objekt, aber das sehe ich nicht in deinem code. Wo ist die ArrayList?
  • Haben Sie versucht, diese zu beantworten ? Mögliche Duplikate von: stackoverflow.com/questions/2422468/...
  • Soweit mein Verständnis dieses ist weil, wenn der 1. Teil wird ausgeführt, erreicht das Ende der Datei daher, wenn es versucht, die Datei zu Lesen, es wirft ArrayIndexOutOfBoundException.Auch wenn ich den 2. Teil, 1. und führen Sie dann den 1. Teil nicht ausgeführt werden, da byteRead erhöht negativ und es verursacht endlose Hilfe.Bitte helfen Sie mir mit etwas code in die ich kann ermittelt werden das Formularfeld von jsp sowie konvertieren der Datei in bytes
InformationsquelleAutor Sankalp | 2012-09-19
Schreibe einen Kommentar