Problemas com FormFile do Struts

4 respostas
N

Galera gostaria de uma ajuda!
Eu tenho que realizar um upload de um arquivo e fazer a leitura desse arquivo porém na minha Action eu não consigo pegar o Path inteiro do arquivo utilizando o FormFile, ele apenas me trás o nome do arquivo.

Alguém poderia me ajudar.

Vlw

4 Respostas

D

Acabei de implementar uma tela aqui no sistema desta forma,também tomei muita pancada,mas é bem simples.

1 passo : no javabean  : private FormFile oArquivo;

//esse metodo salva no servidor a imagem que eu upei,mas irá esclarecer tua dúvida.

public ActionForward salvarPasta(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("Pragma", "no-cache");
		response.setDateHeader("Expires", -1);

		// Proxy responsável por gerenciar o controle de acesso ao sistema.
		ActionForward acesso = ControleAcesso.getControleContexto(request,
				response, mapping).acesso("", "", "");
		if (acesso != null)
			return acesso;
	
		ImagemMapaForm meuForm = (ImagemMapaForm)form; //form onde vc criou private FormFile oArquivo
		ImagemMapaForm frm = (ImagemMapaForm)form;
	        // Process the FormFile
	        FormFile meuArquivo = myForm.getTheFile(); //pega o arquivo
	        
	      //  String contentType = meuForm .getContentType();
	   
	        
	
	       String fileName    = meuArquivo.getFileName(); //pega o nome do arquivo
	        
	      //  int fileSize       = meuArquivo.getFileSize();
	        byte[] fileData    = meuArquivo.getFileData();
	        
	    //Get the servers upload directory real path name
	    String filePath = getServlet().getServletContext().getRealPath("/img");
	    /* Save file on the server */
	    if(!fileName.equals("")){  
	        System.out.println("Server path:" +filePath);
	        //Create file
	        File fileToCreate = new File(filePath, fileName);
	        //If file does not exists create file                      
	        if(!fileToCreate.exists()){
	          FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
	          fileOutStream.write(myFile.getFileData());
	          fileOutStream.flush();
	          fileOutStream.close();
	        }  


Na jsp : 


<html:form action="/imagemMapa.mf?do=insert" method="post"
	enctype="multipart/form-data" onsubmit="validaCampos();">
	<html:hidden property="do" styleClass="none" value="salvarPasta"
		styleId="do" />
	<div id="general">
	<fieldset><legend>Imagem Mapa</legend>
	<div><label>Descrição:</label><html:text property="descricao"
		maxlength="50" styleClass="inputMedium"></html:text></div>
	<div><label>Arquivo:</label><html:file property="theFile"
		styleClass="inputMedium" />
	<table class="noBorder">
		<tr class="noBorder">
			<td class="noBorder">
			<button type="button" onclick="select()">Pesquisar</button>
			<button type="button" onclick="validaCampos();" class="botaoLado">Upload</button>
			</td>
			<td class="noBorder"></td>
		</tr>
	</table>
	<!-- 	<html:submit >Upload</html:submit>--></div>
	</fieldset>
	<div id="conteudo"></div>
	</div>
</html:form>

Qualquer dúvida olhe isto,foi por ele que implementei o meu

só o upload : http://roseindia.net/struts/strutsfileupload.shtml

up+save

http://www.roseindia.net/struts/strutsfileuploadandsave.shtml

N

Então cara, o problema é que o método .getFileName() ele me retorna o nome do arquivo e não o path inteiro.

Eu preciso do path inteiro desse arquivo.

rolemberg

Nunca precisei fazer isso, mas tenta usar esse metodo getInputStream() …

D

desculpa a demora nas respostas,mas vamos la.No meu caso,salvo minha imagem em uma pasta img no JBoss,fica o seguinte:

String pastaArquivoFicara = getServlet().getServletContext().getRealPath("/img");

Quando eu criar o arquivo, passo o caminho e o nome :

File arquivoASerCriado = new File(pastaArquivoFicara, nomeDoArquivo);

ai é so criar o oS

FileOutputStream fileOutStream = new FileOutputStream(arquivoASerCriado);
	          fileOutStream.write(meuArquivo.getFileData());
	          fileOutStream.flush();
	          fileOutStream.close();
Criado 9 de dezembro de 2008
Ultima resposta 10 de dez. de 2008
Respostas 4
Participantes 3