2017-04-03 1 views
0

Ich weiß, dass es vielleicht eine doppelte Frage sein kann, ich lese ähnlichen Beitrag im Internet, aber ich kann meinen Eingabewert von Jsp nicht an Servlet senden. Ich kann Datei hochladen, aber ich muss einen Eingabewert senden. Servlets:Wie Eingabewert übergeben von Multipart/Form-Daten in Jsp zu Servlet?

try { 
       FileItemIterator iterator = upload.getItemIterator(req); 
       while (iterator.hasNext()) { 
        FileItemStream item = iterator.next(); 
        InputStream in = item.openStream(); 


         if (item.isFormField()) { 
          out.println("Got a form field: " + item.getFieldName()); 


          } else { 
           String fieldName = item.getFieldName(); 
           String fileName = item.getName(); 
           String contentType = item.getContentType(); 
           String fileNameWithOutExt = FilenameUtils.removeExtension(fileName); 

           out.println("--------------"); 
           out.println("fileName = " + fileName); 
           out.println("Kind = " + fileNameWithOutExt); 
           out.println("field name = " + fieldName); 
           out.println("contentType = " + contentType); 

           String fileContents = null; 
           try { 

            fileContents = IOUtils.toString(in); 
            out.println("lenght: " + fileContents.length()); 

            String[] content = fileContents.split("\n"); 


            String[] property = content[0].split(","); 

            out.println("lunghezza " + property.length); 
            for (String propr : property) { 
             out.println("prop: " + propr); 
            } 
            //out.println(Arrays.toString(property)); 
            //out.println(fileContents); 
           } finally { 
            IOUtils.closeQuietly(in); 
              } 

            } 
              } 
       } catch (SizeLimitExceededException e) { 
        out.println("You exceeded the maximu size (" 
          + e.getPermittedSize() + ") of the file (" 
          + e.getActualSize() + ")"); 
                } 
      } catch (Exception ex) { 

       throw new ServletException(ex); 
           } 
                  } 

Und das ist mein jsp

<form action="/upload_kind" method="post" enctype="multipart/form-data" > 
<input type="file" name="file" size="50" /> 
<input type="text" name="namespace" id="namespace"> 
<br /> 
<input type="submit" value="Upload File" /> 
</form> 

ich über eine "item.getString()" lesen Methode, aber es ist in DiskFileItem Klasse und nicht in FileItemStream, also kann ich, dass „Namespace sehen "ist gesendet, aber ich kann seinen Wert nicht sehen. Thx und Entschuldigung für mein schlechtes Englisch

+0

Was ist Ihr Eingabewert? Wenn das der Namespace ist, sollten Sie es über request.getParameter ("namespace") abrufen können. –

+0

es ist Namespace, aber ich bin nicht in der Lage, es wegen "multipart/form-data" zu bekommen. – ValeMarz

+1

Mögliches Duplikat von [Wie lade ich Dateien mit Hilfe von JSP/Servlet auf den Server hoch?] (Http://stackoverflow.com/questions/2222468/how-to-upload-files-to-server-using-jsp-servlet) –

Antwort

0

Nach dem duplizierten Link konnte ich mein Problem lösen. Ich habe diesen Code verwendet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    try { 
     List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
     for (FileItem item : items) { 
      if (item.isFormField()) { 
       // Process regular form field (input type="text|radio|checkbox|etc", select, etc). 
       String fieldName = item.getFieldName(); 
       String fieldValue = item.getString(); 
       // ... (do your job here) 
      } else { 
       // Process form file field (input type="file"). 
       String fieldName = item.getFieldName(); 
       String fileName = FilenameUtils.getName(item.getName()); 
       InputStream fileContent = item.getInputStream(); 
       // ... (do your job here) 
      } 
     } 
    } catch (FileUploadException e) { 
     throw new ServletException("Cannot parse multipart request.", e); 
    } 

    // ... 
}