Upload no Struts

10 respostas
E

Bom Dia!

Estou tentando fazer upload com struts, peguei este no http://www.roseindia.net/struts/strutsfileupload.shtml. Sigo os passos do exemplo, mas dá o erro abaixo:

ERROR [[action]] Servlet.service() for servlet action threw exception java.lang.NullPointerException at Upload.StrutsUploadAction.execute(StrutsUploadAction.java:28)

de acordo com o exemplo:

No action:

public class StrutsUploadAction extends Action
{
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception{
	  
    StrutsUploadForm myForm = (StrutsUploadForm)form;

        // Process the FormFile
        FormFile myFile = myForm.getTheFile();
              
        String contentType = myFile.getContentType();
        String fileName    = myFile.getFileName();
        int fileSize       = myFile.getFileSize();
        byte[] fileData    = myFile.getFileData();
    System.out.println("contentType: " + contentType);
    System.out.println("File Name: " + fileName);
    System.out.println("File Size: " + fileSize);
    
      return mapping.findForward("sucesso");
  }

esse myFile tá vindo nulo, como que pega isso no formulário lá da jsp?

o form:

public class StrutsUploadForm extends ActionForm
{
  private FormFile theFile;

  public FormFile getTheFile() {
    return theFile;
  }
  
  public void setTheFile(FormFile theFile) {
    this.theFile = theFile;
  }

Struts:

<form-bean name="FileUpload" type="Upload.StrutsUploadForm"/>

<action
	path="/FileUpload" parameter="execute"
     	type="Upload.StrutsUploadAction"
     	name="FileUpload"
	scope="request"
	validate="true"
     	input="/WEB-INF/web/jsp/upload/fileUpload.jsp">
     	<forward name="sucesso"  path="/WEB-INF/web/jsp/secretaria/home.jsp"/>
</action>

jsp:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html:form action="/FileUpload" method="post" enctype="multipart/form-data">
	<table>
		<tr>
			<td>Please Enter the Following Details</td>
		</tr>
			<td>File Name</td>
			<td><input type="file" name="theFile"></td>  
		</tr>				
		<tr>
			<td><html:submit>Upload File</html:submit></td>
		</tr>
	</table>

</html:form>

Se alguém aí puder ajudar!
Grata

10 Respostas

B

Segue um projeto de exemplo que fiz utilizando os exemplos dos códigos que você colocou no post.

Eu testei e funcionou normal.

E

É, tá tudo igual! Não sei porque não funciona.

Mas, valeu.

B

[i]Pode ser alguma biblioteca do struts que está faltando.

E

Qual foi a versão que você usou do struts? Isto tem alguma influência?

B

Eu usei a versão 1.3 do Struts

Acho que não tem muita influencia. Na Jsp que vc colocou como exemplo vc colocou:

tente colocar:
<html:file property=“theFile”/>

Também pode estar acontecendo esse erro por falta de alguma biblioteca commons.

Se quiser me fala o seu e-mail que te mando o projeto com todas as libs. Tudo funcionando direitinho.

E

segue: [email removido]

que arquivos .jar são esses que vc fez referência qdo enviou o projeto para download?

E

vc disse que podia estar faltando alguma lib, acho que estava mesmo pois deu esse erro:

10:37:06,467 ERROR [[action]] Servlet.service() for servlet action threw exception java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

já adicionei este pacote ao projeto, importei no Action, mas continua aparecendo este erro.

vc sabe o q pode ser?

B

Pelo erro que deu, o seu projeto não está encontrando alguma biblioteca commons.
No projeto que utilizei como teste coloquei todos os libs do struts e funcionou normal.

B

Qual seu e-mail???

E

[email removido]

Eu baixei no site da Apache o pacote commons-fileupload-1.2.jar coloquei no classpach (acho que tá no lugar certo, pelo menos é lá que estão todas as outras lib utilizadas pelo projeto) mas o erro continua.
Peguei outro exemplo de upload e dá o mesmo erro, só que com outras classes não encontradas, todas relacionadas ao fileupload…

não sei mais o que fazer!

Criado 8 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 10
Participantes 2