# Struts File Upload problem



## marone (11. Jun 2006)

hallo,

ich habe ein problem mit dem struts fileupload... 
ich benutze den source von tutorial seiten (http://www.roseindia.net/struts/strutsfileupload.shtml) oder aus einem struts buch, und dennoch, sowie ich 
<html:form action="/FileUpload" method="post" enctype="multipart/form-data"> einbinde, wird eine leere seite geladen (keine default action) und nichts passiert... 
ich bin mir nicht ganz sicher ob das jetzt ein fehler in der actionclass ist oder ob ein problem mit irgendwelchen zusaetzlichen paketen besteht.

hoffe irgendjemand hatte bereits ein aehnliches problem und koennte mir helfen (ich weiss die frage ist etwas unkonkret, aber ich hab inzwischen wirklich alles probiert und weiss mir einfach nicht mehr zu helfen... die restlichen seiten stehen und funktionieren bereits, und ich bin eigentlich der meinung das ich die funktionsweise von struts inzwischen verstanden hab)

vielen dank


fabian


----------



## clemson (12. Jun 2006)

hmm, wäre hilfreich wenn du mal die relevanten stellen in der struts-config.xml und die java klasse(n) postest...

ansonsten, lies' dir mal die vorgehensweise bei dieser struts applikation - im speziellen die FileUploadAction - durch...


----------



## marone (21. Jun 2006)

hallo,

habe mich jetzt nochmal mit dem problem beschaeftigt, und komme einfach nicht weiter...
hier source aus der jsp:

sowie ich den source in der jsp einbinde, bleibt die seite leer..

<html:form action="fileupload.do" method="post" enctype="multipart/form-data">

habe alle variationen durchprobiert (obwohl es mit .do eigentlich funktionieren muesste) dennoch, es will einfach das formular nicht geladen werden 

aus der struts-config.xml:

      <form-bean name="fileuploadForm" type="de.roomex.struts.form.FileuploadForm" />


```
<action
      attribute="fileuploadForm"
      input="page.fileupload"
      name="fileuploadForm"
      path="/fileupload"
      scope="request"
      type="de.roomex.library.struts.action.FileuploadAction">
      <forward name="showUpload" path="page.fileupload" />
      <forward name="success" path="page.myroomex" />
      <forward name="failure" path="page.failure" />
    </action>
```

hoffe ergebenst auf hilfe 

gruesse

fabian


----------



## clemson (21. Jun 2006)

marone hat gesagt.:
			
		

> habe alle variationen durchprobiert (obwohl es mit .do eigentlich funktionieren muesste) dennoch, es will einfach das formular nicht geladen werden



hmm, ich verwende das action attribut bei <html:form> ohne dem ".do"!

wenn dus weglässt' funktionierts auch nicht?

poste mal die action, welche den forward zum formular zurückgibt...


wird eine ganz leere seite zurückgegeben (quellcode = "") oder eine seite, mit minimal-html (quellcode = "<html><body></body></html>"). denn wenn eine leere seite zurückgegeben wird, dann kann der actionforward mit angegebenen namen nicht gefunden werden...


----------



## marone (21. Jun 2006)

ne kommt eine leere seite

hier waere die action klasse


```
package de.roomex.library.struts.action;

import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import de.roomex.library.struts.form.FileuploadForm;

  
public class FileuploadAction extends Action {
	
  	public ActionForward execute(ActionMapping mapping,
              ActionForm form,
              HttpServletRequest request,
              HttpServletResponse response) throws Exception {

  		FileuploadForm uploadForm = (FileuploadForm) form;
  		
		if ((uploadForm.getAction() != null) && uploadForm.getAction().equals("upload")){
			return(upload(mapping, uploadForm, request, response));
		}
		
		return mapping.findForward("showUpload");
    }

  	public ActionForward upload	(ActionMapping mapping,
  								 ActionForm form,
  								 HttpServletRequest request,
  								 HttpServletResponse response)
  									throws ServletException {
  		
  		FileuploadForm uploadForm = (FileuploadForm) form;
  		FormFile file = uploadForm.getFile();
  		
  		try {
  			InputStream stream = file.getInputStream();
  			byte[] buffer = new byte[file.getFileSize()];
  			stream.read(buffer);
  			stream.close();
  			HttpSession session = request.getSession(true);
  			session.setAttribute("file", buffer);
  			session.setAttribute("mime",file.getContentType());
  			
  		} catch ( FileNotFoundException fnfe) {
  			return null;
  		} catch (IOException ioe) {
  			return null;
  		}
  		file.destroy();
  		
  		return mapping.findForward("success");
  	}
}
```

glaub das if im execute ist ein bisschen lame.. wusst mir aber nicht anders zu helfen.. und es funktioniert


----------



## Guest (13. Jul 2006)

ich hab ein ähnliches problem

bei mir ist im execute die 
ActionForm form

null. er bekommt also kein formular.

ein bekanntes problem
code ist eigentlich ident mit dem oberen


----------



## clemson (13. Jul 2006)

Anonymous hat gesagt.:
			
		

> bei mir ist im execute die ActionForm form null. er bekommt also kein formular.



hmm, dann dürfte es wahrscheinlich an deiner struts-config.xml liegen. wird die form auch für die action definiert?


----------

