Skip to content

Instantly share code, notes, and snippets.

@alexandreaquiles
Last active November 8, 2018 19:47
Show Gist options
  • Save alexandreaquiles/8564914 to your computer and use it in GitHub Desktop.
Save alexandreaquiles/8564914 to your computer and use it in GitHub Desktop.
Servlet que faz upload de arquivos no diretório configurado no init-param "diretorio", utilizando a biblioteca commons-fileupload.
<html>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="text" name="texto">
<input type="file" name="arquivo">
<input type="submit" value="Upload">
</form>
</body>
</html>
Baixar os seguintes arquivos e colocar em WEB-INF\lib\
http://repo1.maven.org/maven2/commons-fileupload/commons-fileupload/1.3/commons-fileupload-1.3.jar
http://repo1.maven.org/maven2/commons-io/commons-io/2.2/commons-io-2.2.jar
package upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadArquivoServlet extends HttpServlet {
private File diretorio;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
String path = config.getInitParameter("diretorio");
diretorio = new File(path);
diretorio.mkdirs();
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
out.println("<h1>Voce não enviou um arquivo!</h1>");
return;
}
for (String elemento : request.getParameterMap().keySet()) {
System.out.println(elemento);
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(diretorio);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items ) {
if (!item.isFormField()) {
processUploadedFile(item);
} else {
//para inputs que nao sao 'file', isFormField() é verdadeiro
String nomeDoCampo = item.getFieldName();
String valorDoCampo = item.getString();
System.out.println(nomeDoCampo + ": " + valorDoCampo);
}
}
out.println("<h1>Arquivo gravado!</h1>");
} catch (Exception e) {
out.println("<h1>Erro ao escrever no arquivo!</h1>");
return;
}
}
private void processUploadedFile(FileItem item) throws Exception {
String fileName = item.getName();
File uploadedFile = new File(diretorio, fileName);
item.write(uploadedFile);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>upload.UploadArquivoServlet</servlet-class>
<init-param>
<param-name>diretorio</param-name>
<param-value>D:/Alexandre_Silva/uploads</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
</web-app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment