Não estou conseguindo buscar tópicos antigos usando a pesquisa do fórum :shock:
Vou ter que recorrer então a ajuda de vocês.Achei varios exemplos na internet de servlet para fazer upload, mas a maioria é upload de imagem, é o mesmo processo para fazer upload de uma imagem e de um arquivo de texto?
Alguem ai tem um exemplo de servlet, preciso fazer o upload pro servidor, e salvar(no banco de dados) o endereço que o arquivo está no servidor, para depois disponibilizá-lo para dowload.
Sim, tambem vi dessa API da Apache, mas mesmo assim não consegui fazer funcionar direito Sei que estou abusando um pouquinho, mas se alguem tiver pronto é mais facil rsrs
A maioria que encontro na internet é upload de imagem, o upload é feito da mesma forma?Se for posso me basear nisso…
Então Rafael, como eu disse, não encontrei ainda o projeto no qual eu uso essa bagaça. Estou tentando te ajudar garimpando na Internet para ver se encontro os mesmos caminhos que me fizeram acertar, cerca de 1 ano e meio atrás. Afinal, já coloquei essa joça para funcionar uma vez e pode ser que o caminho que eu faça seja menor.
public class RecebeFile{
/**
* CLASSE QUE USA DA API JAKARTA FILE UPLOAD
*
*/
private static final long serialVersionUID = 1L;
private HttpServletResponse res;
public RecebeFile(HttpServletRequest request){
req = request;;
}
public void GravaArquivo (String Salvar) throws IOException
{
/**<form enctype="multipart/form-data" method = "post" action = "upload">
*defina no form o tipo de enctype multipart
*
***/
boolean podeRecuperar = ServletFileUpload.isMultipartContent(req);
//se for um multipar
if(podeRecuperar)
{
DiskFileItemFactory fabrica = new DiskFileItemFactory();
fabrica.setRepository(new File("."));
FileItemFactory fabItem = fabrica;
ServletFileUpload upload = new ServletFileUpload(fabItem);
try {
List parseRequest = upload.parseRequest(req);
for (Object a : parseRequest)
{
FileItem Fils = (FileItem) a;
if (!Fils.isFormField())
{
File file = new File(Salvar);
FileOutputStream fos = new FileOutputStream(file);
InputStream is = Fils.getInputStream();
byte[] buffer = new byte[2048];
int nLidos;
while ((nLidos = is.read(buffer)) >= 0) {
fos.write(buffer, 0, nLidos);
}
fos.flush();
fos.close();
is.close();
}
}
} catch (FileUploadException e) {
System.out.println(e.getLocalizedMessage());
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
}
}
}
Amigo, ele está deixando na “memória” Stream, o arquivo…
Essa minha servlet, ela pega o arquivo e joga para uma classe (Upload) onde verifico o nome do arquivo, no meu caso EXCEL, depois vai para outra classe onde faço umas verificações para poder carregar na DAO (para enviar para o BD).
Ele tambem faz uma verificação do nome do arquivo (caminho) pois no IE tem um jeito e no Crhome tem outro… um pega o caminho completo do arquivo, outro pega só o nome, e já tem esse tratamento que vc iria se deparar…
package servlet.br.com.simcard;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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 br.com.simcard.UploadTelecom;
/**
*
* ♌ℜα₣α€£✡♁
*
**/
@WebServlet("/ServletUploadTelecom")
public class ServletUploadTelecom extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletUploadTelecom() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
boolean isMultipartContent = ServletFileUpload
.isMultipartContent(request);
if (!isMultipartContent) {
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br>");
out.println("Erro no Nome do Arquivo<br/>");
out.println("</center>");
out.println("</body>");
out.println("</html>");
return;
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
File dir = new File("arquivoUpload");
if (dir.mkdir()) {
System.out.println("Diretório criado com sucesso!");
} else {
System.out.println("Erro ao criar ou diretório já criado!");
}
try {
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
while (it.hasNext()) {
out.println("<tr>");
FileItem fileItem = it.next();
if (fileItem.getName() != null) {
try {
HttpSession session = request.getSession();
String login = (String) session
.getAttribute("loginUsuario");
String caminho = null;
if (fileItem.getName().contains("\\")) {
String caminho2 = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File uploadedFile = new File("./arquivoUpload/"
+ caminho2);
fileItem.write(uploadedFile);
caminho = "./arquivoUpload/" + caminho2;
} else {
// SE FOR IE PASSAR O CAMINHO QUE VIRA SÓ O NOME DO
// AQRQUIVO
File uploadedFile = new File("./arquivoUpload/"
+ fileItem.getName());
fileItem.write(uploadedFile);
caminho = "./arquivoUpload/" + fileItem.getName();
}
if (new UploadTelecom().anexos(login, caminho, response)) {
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br>");
out.println("Arquivo enviado com Sucesso!");
out.println("</center>");
out.println("</body>");
out.println("</html>");
} else {
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br>");
out.println("Erro ao enviar arquivo!<br><br> Nome e/ou Tipo Inválido(s)");
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br/>" + "<br/>" + "<br/>"
+ "<input type=\"button\" onclick=\"javascript: location.href='uploadArquivoTelecom.jsp';\" value=\"Voltar\" />");
out.println("</center>");
out.println("</body>");
out.println("</html>");
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
out.println("</table>");
} catch (FileUploadException e) {
e.printStackTrace();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br>");
out.println("Erro Interno");
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br>");
out.println("Erro Interno");
out.println("</center>");
out.println("</body>");
out.println("</html>");
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("<br/>" + "<br/>" + "<br/>"
+ "<input type=\"button\" onclick=\"javascript: location.href='uploadArquivoTelecom.jsp';\" value=\"Voltar\" /> ");
out.println("</center>");
out.println("</body>");
out.println("</html>");
out.close();
}
}