Salvar imagem em WebContent

6 respostas
M

e ai pesoal qro faze upload de imagem e salvar dentro da pasta do projeto webContent/imagens to usando primefaces ja fiz aqui mas fala q o caminho não existe

byte[] conteudo = event.getFile().getContents();
			
			
			String localPath = System.getProperty("user.dir");
			String caminho = (localPath + "/SAP/WebContent/imagens/" + event.getFile().getFileName());
			
			System.out.println(caminho);
			
			FileOutputStream fos = new FileOutputStream(caminho);
			fos.write(conteudo);
			fos.close();

erro

java.io.FileNotFoundException: D:\Programas\Eclipse Indigo\SAP\WebContent\imagens\logo.gif (O sistema não pode encontrar o caminho especificado)

6 Respostas

R

Ola, quando fiz uma aplicação web e precisava fazer upload de imagens de produtos usei esta biblioteca:

http://commons.apache.org/fileupload/

resolveu meu problema…
creio que seja exatamente oque precisas, eu upava a imagem para uma pasta no servidor, porem depois eu a salvava no banco e deletava o arquivo…

M

opa vlw pela resposta… essa lib ja tem no meu projeto… mais alguma sugestao?

H

Faça um teste, tente salvar na raiz D:/

Alguns servidores não liberam alteração de estrutura de pastas dentro do diretório do servidor.

M

ja fiz o teste e funciona… mas qria salvar na pasta do servidor pq vai ser a logomarca da empresa q contratar o sistema ai tando no d: fica foda

H

michelorth_92:
ja fiz o teste e funciona… mas qria salvar na pasta do servidor pq vai ser a logomarca da empresa q contratar o sistema ai tando no d: fica foda
Tem que ver alguma configuração do seu servidor então.

O normal que eu já vi em toda empresa é ter uma pasta a parte.

E ao invés de ter um caminho escrito no código igual vc fez, teria-se uma configuração onde apontaria o caminho para essa pasta.

Boa sorte aí.

R

Ok, sem problemas, se voce ja possui a lib então so lhe falta o código, isso?

na época quando precisei era para um servlet, grande parte do código de salvar a imagem peguei da web.
segue de exemplo meu servlet. este servlet é um basico cadastro de produto, se analizar, verá no código que é definida a pasta do servidor para onde a foto é enviada
temporariamente até ser transformada em objeto e salva no banco.
voce apenas não fara a exclusao do arquivo para mante-lo salvo

package servlet;

import java.io.File;
import java.io.FileInputStream;
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 javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import business.Categoria;
import business.Produto;
import database.ProdutoDAO;

public class ServletProduto extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String TMP_DIR_PATH = "c:\\tmp";
	private File tmpDir;
	private static final String DESTINATION_DIR_PATH ="/files";
	private File destinationDir;

	public ServletProduto() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		tmpDir = new File(TMP_DIR_PATH);
		if(!tmpDir.isDirectory()) {
			throw new ServletException(TMP_DIR_PATH + " is not a directory");
		}
		String realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
		destinationDir = new File(realPath);
		if(!destinationDir.isDirectory()) {
			throw new ServletException(DESTINATION_DIR_PATH+" is not a directory");
		}

	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		HttpSession s = request.getSession();
		PrintWriter out = response.getWriter();
		try {
			out.println("<html>");
			out.println("<head>");
			out.println("<title>Removendo Produto</title>");
			out.println("<META HTTP-EQUIV=\"Refresh\"CONTENT=\"2; URL=ServletProdutos\">");
			out.println("</head>");
			out.println("<body>");
			if (s.getAttribute("login") != null && s.getAttribute("admin").equals("t")) {
				if (request.getParameter("action") != null) {
					if (request.getParameter("action").equals("delete")) {
						ProdutoDAO pDAO = new ProdutoDAO();
						Produto p = new Produto();
						p.setCodigo(Long.parseLong(request.getParameter("id")));
						if (pDAO.delete(p))
							out.print("Produto Excluido!");
						else
							out.print("Ocorreu um erro durante a exclusão!");
					}
				}
			} else
				out.println("Você não possui permissões para acessar esta página!");
			out.println("</body>");
			out.println("</html>");
		} finally {            
			out.close();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		try {
			out.println("<html>");
			out.println("<head>");
			out.println("<title>Cadastro de Produto</title>");
			out.println("<META HTTP-EQUIV=\"Refresh\"CONTENT=\"2; URL=ServletProdutos\">");
			out.println("</head>");
			out.println("<body>");

			DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();
			fileItemFactory.setSizeThreshold(1*1024*1024); //1 MB
			fileItemFactory.setRepository(tmpDir);

			ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
			@SuppressWarnings("rawtypes")
			List items = uploadHandler.parseRequest(request);
			@SuppressWarnings("rawtypes")
			Iterator itr = items.iterator();

			Produto produto = new Produto();
			produto.setCategoria(new Categoria());

			while(itr.hasNext()) {
				FileItem item = (FileItem) itr.next();

				if(item.isFormField()) {
					if (item.getFieldName().equals("descricao"))
						produto.setDescricao(item.getString());
					if (item.getFieldName().equals("valor"))
						produto.setValor(Double.parseDouble(item.getString()));
					if (item.getFieldName().equals("categoria"))
						produto.getCategoria().setCodigo(Long.parseLong(item.getString()));
				} else {
					File file = new File(destinationDir,item.getName());
					item.write(file);

					File foto = new File(destinationDir+"\\"+file.getName());
					byte[] fileBlob;  
					FileInputStream fis;  
					int fileLength = 0;  
					fis = new java.io.FileInputStream(foto);  
					fileLength  = (int)foto.length() + 1;  
					fileBlob    = new byte[fileLength];  
					fis.read(fileBlob);  
					fis.close();
					foto.delete();
					produto.setFoto(fileBlob);
				}
			}
			ProdutoDAO pDAO = new ProdutoDAO();
			if (pDAO.add(produto))
				out.print("Produto Gravado com Sucesso!");
			else
				out.print("Ocorreu um erro durante a gravação!");
			out.println("</body>");
			out.println("</html>");
			out.close();
		}catch(FileUploadException ex) {
			log("Error encountered while parsing the request",ex);
		} catch(Exception ex) {
			log("Error encountered while uploading file",ex);
		} finally {            
			out.close();
		}
	}

}
Criado 24 de maio de 2012
Ultima resposta 24 de mai. de 2012
Respostas 6
Participantes 3