Upload struts1

5 respostas
cristianrm

Estou com problema para fazer upload de arquivos estou usando o framework struts , eu ja sei onde que éo problema mas não estou conseguindo resolver , aqui está meu jsp:

<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>

<%@ taglib prefix=“f” uri=“http://java.sun.com/jsp/jstl/fmt”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
<%@ taglib prefix=“h” uri=“http://struts.apache.org/tags-html”%>
<%@ taglib prefix=“b” uri=“http://struts.apache.org/tags-bean”%>
<%@ taglib prefix=“l” uri=“http://struts.apache.org/tags-logic”%>

<h:html>

<c:import url="/pages/comum/head.jspf" />

<h:form action="/imagem">

<h:hidden property=acao />
<td>
			<h2><f:message key="cadastroBasico.cadastro.imagem" /></h2>
			 </td>
		</tr>
	
	
		<tr>
			<td align="right">
			File Name
			</td>
			<td align="left">
			<h:file property="file"></h:file>
			</td>
		</tr>
					


	<tr>
		<td><f:message key="cadastroBasico.descricao.Imagem" /></td>
		<td><h:textarea property="descricao" name="imagemForm" ></h:textarea></td>
	</tr>

<tr>
		<td><input type="button" onclick="javascript:executar('salvar')"
			value='<f:message key="msg.salvar"/>'></td>
		<td><input type="button" onclick="javascript:executar('buscarTodos')" value='<f:message key="msg.buscar.todos" />'> </td>
	</tr>
	</l:equal>
</table>

<div id="errorCad"><c:import url="/pages/comum/error.jsp"></c:import></div>

</h:html>

**esse éo meu arquivo struts xml:


</action>

**esse éo meu arquivo Form:

package br.org.portal.vale.web.form;

import org.apache.struts.upload.FormFile;

public class ImagemForm extends FormAbstrato{

private String endereco;
private String descricao;
private String acao;
private FormFile file;


public FormFile getFile() {
	return file;
}
public void setFile(FormFile file) {
	this.file = file;
}
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public String getDescricao() {
	return descricao;
}
public void setDescricao(String descricao) {
	this.descricao = descricao;
}
public String getAcao() {
	return acao;
}
public void setAcao(String acao) {
	this.acao = acao;
}

}

[color=red]**Esse éo meu arquivo Action:[/color]

package br.org.portal.vale.web.action;

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

import org.apache.commons.beanutils.BeanUtils;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

import org.apache.struts.upload.FormFile;
import br.org.portal.vale.business.persistencia.Categorias;

import br.org.portal.vale.business.persistencia.Cidade;

import br.org.portal.vale.business.persistencia.Imagem;

import br.org.portal.vale.informatica.business.FornecedorDelegate;

import br.org.portal.vale.util.Constantes;

import br.org.portal.vale.web.form.ImagemForm;

public class ImagemAction extends DispatchAction{

public ActionForward salvar(ActionMapping actionMapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
		throws Exception {
	ImagemForm imagemForm = (ImagemForm) form;
	Imagem imagem = new Imagem();
	Cidade cidade = new Cidade();
	Categorias categorias = new Categorias();
	 FormFile myFile = imagemForm.getFile();
        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);

	FornecedorDelegate fornecedorDelegate = new FornecedorDelegate();
	BeanUtils.copyProperties(imagem, imagemForm);

	
	
	
		
	return actionMapping.findForward(Constantes.DIRECIONA_CADASTRO_IMAGEM);

}

**essa éa Função javascript que chama o método da action: Esse metodo está dentro de um aquivo.

function executar(opcao) {

document.forms[0].acao.value = opcao;

document.forms[0].submit();

}

[color=red]**Esse éo erro que está dando:[/color]

2008-06-23 18:46:26,250 DEBUG struts.util.ModuleUtils  -> Get module name for path /imagem.do

2008-06-23 18:46:26,250 DEBUG struts.util.ModuleUtils  -> Module name found: default

2008-06-23 18:46:26,250 DEBUG struts.action.RequestProcessor  -> Processing a POST for path '/imagem

2008-06-23 18:46:26,250 DEBUG struts.util.RequestUtils  ->  Looking for ActionForm bean instance in scope session under attribute key 'imagemForm

2008-06-23 18:46:26,250 DEBUG struts.util.RequestUtils  ->  Can recycle existing ActionForm instance of type br.org.portal.vale.web.form.ImagemForm?: true

2008-06-23 18:46:26,250 DEBUG struts.util.RequestUtils  ->  --> br.org.portal.vale.web.form.ImagemForm@a50da4

2008-06-23 18:46:26,250 DEBUG struts.action.RequestProcessor  ->  Storing ActionForm bean instance in scope session under attribute key 'imagemForm

2008-06-23 18:46:26,250 DEBUG struts.action.RequestProcessor  ->  Populating bean properties from this request

2008-06-23 18:46:26,250 DEBUG commons.beanutils.BeanUtils  -> BeanUtils.populate(br.org.portal.vale.web.form.ImagemForm@a50da4, {acao=[Ljava.lang.String;@19c9f16, file=[Ljava.lang.String;@1909385, descricao=[Ljava.lang.String;@c51614})

2008-06-23 18:46:26,250 DEBUG commons.beanutils.BeanUtils  ->   setProperty(br.org.portal.vale.web.form.ImagemForm@a50da4, acao, [salvar])

2008-06-23 18:46:26,250 DEBUG commons.beanutils.ConvertUtils  -> Convert string salvar to class 'java.lang.String

2008-06-23 18:46:26,250 DEBUG commons.beanutils.ConvertUtils  ->   Using converter org.apache.commons.beanutils.converters.StringConverter@ba5c7a

2008-06-23 18:46:26,250 DEBUG commons.beanutils.BeanUtils  ->   setProperty(br.org.portal.vale.web.form.ImagemForm@a50da4, file, [C:\Documents and Settings\Cristian\Desktop\11.txt])

2008-06-23 18:46:26,250 DEBUG commons.beanutils.ConvertUtils  -> Convert string C:\Documents and Settings\Cristian\Desktop\11.txt to class 'org.apache.struts.upload.FormFile

2008-06-23 18:46:26,250 DEBUG commons.beanutils.ConvertUtils  ->   Using converter org.apache.commons.beanutils.converters.StringConverter@ba5c7a

23/06/2008 18:46:26 org.apache.catalina.core.StandardWrapperValve invoke

** Eu acredito que seja pela falta do <enctype=“multipart/form-data”> no form, mas eu ja coloquei e mesmo assim não reconheçe, quem tiver uma solução ou uma dica eu agradeço.

5 Respostas

Anderson_Leite

oi cristian, vamos com calma.

Você ta no caminho certo usando <enctype=“multipart/form-data”> no jsp.

Agora debuga na sua action e ve se a sua variável FormFile file ta sendo populada.

Se estiver, agora falta pegar um byte[] dela e fazer o upload.

obs: qndo escrever códigos, coloca a tag

[]s

cristianrm

Anderson ai que tá, na hora de enviar as informaçoes que está dando o erro, nem está chegando na action. Se eu debugar a action no metodo save nem está entrado.

cristianrm

Por gentileza se alguem tiver uma solução eu agradeço.

Anderson_Leite

vc tem um form sem nome

e da um submit no form ‘salvar’

ou vc coloca um nome/id no form ou vc troca o button por um submit

cristianrm

Como assim colocar nome no form?

Criado 23 de junho de 2008
Ultima resposta 25 de jun. de 2008
Respostas 5
Participantes 2