# Fileupload in GWT funktioniert nicht



## Dudo (19. Jul 2011)

Hi Leute,
wie schon gesagt funktioniert der Fileupload nicht bei mir.
Eclipse gibt immer die Fehlermeldung: 
                            [WARN] No file found for: /englishlearning/fileupload
dass das Fileupload-Servlet nicht gefunden wird.

Ich hab schon alles versucht und komme einfach nicht weiter.
Ich poste mal einfach den Code und hoffe dass mir jemand helfen kann.


```
public class FileUploadSample implements EntryPoint {

	public void onModuleLoad() {
		
		final FormPanel formPanel = new FormPanel();
		formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
		formPanel.setMethod(FormPanel.METHOD_POST);
		formPanel.setAction(GWT.getModuleBaseURL() +"fileupload");
		
		VerticalPanel panel = new VerticalPanel();
		formPanel.setWidget(panel);
		FileUpload upload = new FileUpload();
		panel.add(upload);
		panel.add(new Button("Submit", new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				formPanel.submit();
			}
		}));
		RootPanel rootPanel = RootPanel.get();
		rootPanel.add(formPanel);
	}
}
```

Das ist das Servlet

```
public class FileUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String UPLOAD_DIRECTORY = "e:\\uploaded\\";

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
	       throws ServletException, IOException {
	       super.doGet(req, resp);
	}
	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
		resp.setContentType("text/plain");
		
		if (ServletFileUpload.isMultipartContent(req)) {
			 System.out.println("ServletFileUpload.isMultipartContent == true");
	             // Create a factory for disk-based file items
	             FileItemFactory factory = new DiskFileItemFactory();
	             // Create a new file upload handler
	             ServletFileUpload upload = new ServletFileUpload(factory);
	             // Parse the request
	             try {
	                 List<FileItem> items = upload.parseRequest(req);
	                 for (FileItem item : items) {
	                     // process only file upload - discard other form item types
	                     if (item.isFormField()) continue;
	                     
	                     String fileName = item.getName();
	                     // get only the file name not whole path
	                     if (fileName != null) 
	                     {
	                        fileName = FilenameUtils. getName(fileName);
	                     }
			             File uploadedFile = new File(UPLOAD_DIRECTORY, fileName);
	                     if (uploadedFile.createNewFile()) 
	                     {
	                         item.write(uploadedFile);
	                         resp.setStatus(HttpServletResponse.SC_CREATED);
	                         resp.getWriter().print("The file was created successfully.");
	                         resp.flushBuffer();
	                     } 
	                     else
	                         throw new IOException("The file already exists in repository.");
	                 }// ende for(FileItem item ....)
	             } catch (Exception e) 
	             {
	                 resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"An error occurred while creating the file : " + e.getMessage());
	             }
		} 
		else 
		{
			resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "Request contents type is not supported by the servlet.");
		}
	}// end doPost()...
	
}
```

und das ist der Eintrag in die WEB.XML

```
<servlet>
    <servlet-name>FileUploadServlet</servlet-name>
    <servlet-class>com.learn.english.server.FileUploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FileUploadServlet</servlet-name>
    <url-pattern>/FileUploadServlet</url-pattern>
  </servlet-mapping>
```

Eintrag in die Anwendungsname.gwt.xml Datei

```
<servlet class="com.learn.english.server.FileUploadServlet" path="/fileupload" />
```

Ich verstehe wirklich nicht was los ist. Hab die ganze Zeit schon an der WEB.XML rumgebastelt aber nichts half.
Würde mich freuen wenn mir jemand helfen könnte.
Gruß!


----------



## Noctarius (19. Jul 2011)

Zeigt dein URL Mapping nicht auf "/FileUploadServlet" statt "/fileupload"?


----------



## Dudo (19. Jul 2011)

Hi Noctarius

hab es geändert 

```
<servlet>
    <servlet-name>FileUploadServlet</servlet-name>
    <servlet-class>com.learn.english.server.FileUploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FileUploadServlet</servlet-name>
    <url-pattern>/fileupload</url-pattern>
  </servlet-mapping>
```

bringt aber trotzdem nichts.


----------



## Dudo (19. Jul 2011)

Habe gerade bisschen gegooglet und dieses hier gefunden.
gwtupload-0.6.3-compat.jar and include it in your classpath. Also, add these libraries to your application: commons-fileupload-1.2.2.jar, commons-io-2.0.1.jar and log4j-1.2.16.jar.

heißt es, dass ich in die Classpath Variable, die ich unter Systemsteuerung -> System -> Systemeigenschaften -> Umgebungsvariablen -> Path erreiche, den Pfad zu den eben genannten Jar-Dateien eintragen muss?

Gruß!


----------



## Noctarius (19. Jul 2011)

Nein sie müssen in den classpath des Webapp oder des Tomcat.


----------



## Dudo (19. Jul 2011)

Wie kann man das denn machen?
Im Internet finde ich leider nichts.


----------



## Dudo (19. Jul 2011)

Kann denn niemand antworten?


----------



## Noctarius (19. Jul 2011)

Entweder wie man Abhängigkeiten in Webapps halt immer definiert oder zur Not ab in den libs Folder vom Tomcat.


----------



## Dudo (19. Jul 2011)

hmm
ich glaube da fehlen mir die Grundlagen.
Hast du vielleicht einen Link wo ich mir das anlesen könnte?
Gruß!


----------



## Noctarius (20. Jul 2011)

Ersteres sollte in jedem Webapp Tutorial stehen und Letzteres: TOMCAT_HOME/lib oder TOMCAT_HOME/common/lib (je nach Version)


----------



## Dudo (20. Jul 2011)

Hallo Noctarius,

hab den Fehler gefunden.
Es lag am Web.xml-Eintrag und zwar bei Url-Pattern.
Der Name des Projekts hat noch gefehlt.

```
<servlet-mapping>
  	<servlet-name>FileUploadServlet</servlet-name>
  	<url-pattern>/Name_des_Gwt_Projekts/fileupload</url-pattern>
  </servlet-mapping>
```

Danke für die Hilfe.
Gruß!


----------

