Pessoal do grupo… Estou tendo dificuldades para fazer um upload simples com JSP…
Não sei se estou esquecendo de alguma coisa mas, quanto altero o enctype do form para multipart/form-data, simplesmente meu servlet não consegue recuperar via request.getParameter(“parâmetro”), um parâmetro da página. Simplificando, se fosse usar esse método de upload com um servlet que fizesse um cadastro de um funcionário por exemplo com upload d foto, o servlet só iria recuperar o arquivo, os dados do funcionário não são recuperados via request.getParameter().
Estou colocando meu servlet e minha jsp de exemplo aqui para que vcs possam ver… qualquer ajuda eh bem vinda e dsd jah agradeço.
upload.jsp
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
UploadServlet.java
package upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.http.fileupload.FileUpload;
/**
- Servlet implementation class for Servlet: UploadServlet
*/
public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
public UploadServlet () {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
upload(request, response);
String nome = request.getParameter("nome");
System.out.println("nome: " + nome);
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
public void upload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultiPart = FileUpload.isMultipartContent(request);
if (isMultiPart) {
System.out.println("upload");
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String formulario = "";
System.out.println(formulario);
try {
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.getFieldName().equals("tipoForm")) {
formulario = item.getString();
System.out.println("tipoForm");
}
if (!item.isFormField()) {
if (item.getName().length() > 0) {
System.out.println("chama método");
this.inserirImagemDiretorio(item);
}
}
}
} catch (FileUploadException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private void inserirImagemDiretorio(FileItem item) throws IOException {
String caminho = "D:/Workspace/upload/WebContent/arquivos/";
File diretorio = new File(caminho);
System.out.println("diretorio: " + diretorio.getAbsolutePath());
if (!diretorio.exists()) diretorio.mkdir();
String nome = item.getName();
String arg[] = nome.split("\\\\");
for (int i = 0; i < arg.length; i++) nome = arg[i];
File file = new File(diretorio, nome);
FileOutputStream output = new FileOutputStream(file);
InputStream is = item.getInputStream();
byte[] buffer = new byte[2048];
int nLidos;
while ((nLidos = is.read(buffer)) >= 0) {
output.write(buffer, 0, nLidos);
}
output.flush();
output.close();
}
}
O upload funciona direito, mas não recupera o nome via request.getParameter().