fileupload mit jarkata commons

sj41

Grünschnabel
hi,

sagt mal hat einer von euch eine Ahnung wie man einen Fileupload über Servlets mit der Jarkata Commons Libary realisiert, meine Kenntnisse sind diesbezüglich nicht die besten?

Am folgenden Code Teil liegt bei mir der Fehler

ServletFileUpload sful= new ServletFileUpload();
java.util.List liste = sful.parseRequest(request);

Bei parseRequest krachst mit einer NullPointerException!

wäre cool wenn einer von euch ne Ahnung hat.
 
Hallo!

Folgendes funktioniert bei mir:

upload.jsp:
Code:
 <%@page contentType="text/html" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
    <head>
 	  <title>JSP Page</title>
    </head>
    <body bgcolor="#FFFFFF">
 	  <form enctype="multipart/form-data" action="uploadServlet" method="POST">
 		 Datei: <input name="uploadFile" type="file">
 		 <input type="submit" vaule="upload">
 	  </form>
    </body>
 </html>

Code:
 /**
  * 
  */
 package de.tutorials;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
 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.DiskFileUpload;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
 
 /**
  * @author Tom
  * 
  */
 public class UploadServlet extends HttpServlet {
 	@Override
 	protected void doPost(HttpServletRequest request,
 			HttpServletResponse response) throws ServletException, IOException {
 		DiskFileUpload diskFileUpload = new DiskFileUpload();
 		try {
 			List files = diskFileUpload.parseRequest(request);
 			byte[] buffer = new byte[8192];
 			for (Iterator iter = files.iterator(); iter.hasNext();) {
 				FileItem element = (FileItem) iter.next();
 
 				if (!element.isFormField()) {
 		    		String fileName = element.getName();
 		    		fileName = fileName.replace('\\', '/');
 					fileName = fileName
 		    		    	.substring(fileName.lastIndexOf('/') + 1);
 		    		InputStream is = element.getInputStream();
 
 		    		FileOutputStream fos = new FileOutputStream(
 		    		    	new File(getServletContext().getRealPath("WEB-INF/upload"),
 		    		    			fileName));
 					int len = 0;
 		    		while ((len = is.read(buffer)) > 0) {
 		    		    fos.write(buffer, 0, len);
 					}
 					fos.flush();
 					fos.close();
 					is.close();
 				}
 
 			}
 		} catch (FileUploadException e) {
 			e.printStackTrace();
 		}
 //		
 //		request.getRequestDispatcher("/pages/Welcome.jsp").forward(request,
 //				response);
 
 	}
 }

Im WEB-INF Verzeichnis der Web-Applikation gibt es Verzeichnis upload. Durch die Lage im WEB-INF Verzeichnis ist das upload Verzeichnis vor Zugriffen über die URL geschützt.

Gruß Tom
 
HI,
ich verzweifle hier noch, probiere den Code schon ein Monat aus um ihn in mein Chat einzubinden. Ich weiss echt nicht wie ich den Code aufrufen kann. Wäre mal einer so nett und könnte mir helfen
Hab hier mal bisschen angefangen. Also ist für einen Java Http stream chat. (FrettJC)

private void Upload()
{
String s = this.vars.getProperty("service");
ChatSession sess = (ChatSession) this.serv.users.get(this.vars.getProperty("sessionid"));
if(s.equals("upload"))
{

# So Etwa?

this.doPost(HttpServletRequest request, HttpServletResponse response);
}
}

MFG Daniel
 
Zuletzt bearbeitet:
Hi *,

ich arbeite mich seit 2 Wochen in JSP und Apache Struts 2 ein und muss jetzt einen Dateiupload coden, der eine Datei direkt in eine BLOB-DB schreibt. Habe auch schon für den Upload die Commons-Library von Jakarta gefunden, bin aber noch nicht durchgestiegen, wie das funktioniert, weil mir mein Compiler (für das offizielle Example von der Jakarta-Homepage und auch für das Beispiel s.o.!!) Fehler ausspuckt. Kennt da jemand ein _SIMPLES_ Codesnippet, das lauffähig ist? ;-)
 
Java:
byte[] buffer = new byte[8192];

Wieso hat hier das byte[] eine Größe von 8192 bekommen?

Ich brauche nämlich gerade ein Upload Script in JSP damit ich eine zu deployende Datei auf den Server bekomme ;)

Ich soll nicht in eine Datei speichern sonder gleich das byte[] verarbeiten (was ja auch funktioniert. Nur muss es auch ordentlich auf dem Zielrechner ankommen).

Greeze Chimaira
 
Zurück