Upload de multiplos arquivos com struts

2 respostas
J

Estou tendo problemas para fazer o upload de varios arquivos num mesmo formulario utilizando struts. Fiz uma UploadAction e uma UploadActionForm e nessa ultima acrescentei as funções getters e setters para a variável privada que chamei de content do tipo FormFile aonde guardo o arquivo trazido pelo upload. Com um arquivo só a coisa funciona bem, o problema é quando tento fazer o upload de mais de um arquivo usando o upload.jsp que segue abaixo; na action eu uso uma lista aonde eu gostaria de guardar cada bean content(isto é,o arquivo que fiz o upload) que foi lido ao ser clicado o botão upload correspondente (faço o upload de três arquivos), mas ao rodar o código verifico que a lista tem apenas o último arquivo que fiz upload e os dois primeiros sumiram. Na verdade, eu seto uma variável “entrada” na session que conteria essa lista atualizada, a cada upload feito.
Como faço para obter a lista com o upload dos três arquivos?
Alguém poderia me ajudar?

<html:form action="/form/upload.do" method="POST" enctype="multipart/form-data">
            <html:hidden property="acao" value="configurar" />            
            <html:file property="content"/><html:submit value="Upload"/><br>
            <html:file property="content"/><html:submit value="Upload"/><br>            
            <html:file property="content"/><html:submit value="Upload"/><br><br>
                <br><br>
            <html:submit value="Enviar"/>            
        </html:form>

O UploadAction está assim:

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

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

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import UploadActionForm;



public class UploadAction extends org.apache.struts.action.Action {

    private List lista;
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, HttpServletResponse response)throws Exception{

           UploadActionForm uploadActionForm = (UploadActionForm)form;
           FormFile content = uploadActionForm.getContent();                
    
        
           String contentType = content.getContentType(); 
           String fileName    = content.getFileName();    
           int fileSize       = content.getFileSize();    
           byte[] fileData    = content.getFileData();    
             
           InputStream entrada = content.getInputStream();   
             
            
           HttpSession session = request.getSession(true);  
           lista.add(entrada);
           
           
           session.setAttribute("entrada",lista);  
            
        
        return mapping.findForward("configurar");
    }
            
}

E o UploadActioForm está assim:

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;


public class UploadActionForm extends org.apache.struts.action.ActionForm {
    private FormFile content;
    
    public FormFile getContent(){
        return content;
    }
    
    public void setContent(FormFile content){
        this.content = content;
    }

    public UploadActionForm() {
        super();
    }
    
}

2 Respostas

Focao

Form

private FormFile content; 
private FormFile content2; 
private FormFile content3;

jsp

&lt;html:form action="/form/upload.do" method="POST" enctype="multipart/form-data"&gt;   
    &lt;html:hidden property="acao" value="configurar" /&gt;               
    &lt;html:file property="content"/&gt;&lt;html:submit value="Upload"/&gt;<br>   
    &lt;html:file property="content2"/&gt;&lt;html:submit value="Upload"/&gt;<br>               
    &lt;html:file property="content3"/&gt;&lt;html:submit value="Upload"/&gt;<br><br>   
        <br><br>   
    &lt;html:submit value="Enviar"/&gt;               
&lt;/html:form&gt;
J

Era issso mesmo!

Obrigada

Criado 12 de dezembro de 2008
Ultima resposta 22 de dez. de 2008
Respostas 2
Participantes 2