Enviar um file html para uma servlet [RESOLVIDO]

5 respostas
mauricioadl

Pessoal, bom dia!

Preciso enviar um arquivo usando somente o input file do html para uma servlet sem nenhum framework.

É possivel? Como?

Obrigado!

5 Respostas

jweibe

Possivel sim! porém acredito que será uma tarefa bem complexa… aconselho fazer o download dos sources
da biblioteca Commons FileUpload verificar como a mesma foi construida, dai vc terá uma ideia de como
fazer sua propria implementação.
Mais qual o motivo de vc não usar algum framework?

mauricioadl

jweibe:
Possivel sim! porém acredito que será uma tarefa bem complexa… aconselho fazer o download dos sources
da biblioteca Commons FileUpload verificar como a mesma foi construida, dai vc terá uma ideia de como
fazer sua propria implementação.
Mais qual o motivo de vc não usar algum framework?

Obrigado pela ajuda!

O motivo de nao poder usar um framework é porque ja existe um em outra linguagem, porem ele nao atende bem o upload de arquivos.

mauricioadl
Resolvido, o macete está no arquivo .html. É preciso especificar o tipo de encoder correto.
<html>
<head>
</head>
<body>
	<form action="FileUpload" enctype="multipart/form-data" method="post">
		&lt;input type="file" name="arquivo"/&gt;<br /> 
		&lt;input type="submit" value="Enviar" /&gt;
	&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
Codigo dentro da servlet
DiskFileItemFactory fileItem = new DiskFileItemFactory();
		ServletFileUpload fileUpload = new ServletFileUpload(fileItem);
		try {
			List&lt;FileItem&gt; itens = fileUpload.parseRequest(request);
			for (FileItem fi : itens) {
				fi.write(new File("c:/temp/TESTE", fi.getName()));
			}

		} catch (FileUploadException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
jweibe

mauricioadl
Preciso enviar um arquivo usando somente o input file do html para uma servlet sem nenhum framework.

DiskFileItemFactory fileItem = new DiskFileItemFactory();  
        ServletFileUpload fileUpload = new ServletFileUpload(fileItem);  
        try {  
            List&lt;FileItem&gt; itens = fileUpload.parseRequest(request);  
            for (FileItem fi : itens) {  
                fi.write(new File("c:/temp/TESTE", fi.getName()));  
            }  
  
        } catch (FileUploadException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }

Mais o código que vc postou que está dentro da sua Servlet e do Commons FileUpload .

mauricioadl

Esqueci de falar.
Usei a versao que vem junto com o tomcat, assim nao precisei importar mais nada dentro do servidor.

import org.apache.tomcat.util.http.fileupload.FileItem;

import org.apache.tomcat.util.http.fileupload.FileUploadException;

import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;

import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
Criado 29 de dezembro de 2011
Ultima resposta 29 de dez. de 2011
Respostas 5
Participantes 2