Upload de Fotos passando caminho da pasta para o BD Oracle

3 respostas
R

Bom dia a todos,

Tenho um formulario na qual sera necessario salvar imagens no banco, pelo que ja li nos exemplos que existem na Web, o melhor caminho é salvar uma String no Banco que direciona para uma pasta que vai ficar no meu servidor. Confesso que nunca fiz isso, e não tenho idéia como, mas olhando uns exemplos fiz a JSP e a SERVLET, gostaria que alguem postasse um exemplo de classe DAO para eu ter uma idéia de como faz, não estou pedido para fazer, mas não achei na Web algum exemplo entendivel para suprir minha necessidade, abaixo vou compartilhar o que fiz até para um feedBack melhor:

Class JSP:

[code]
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@page import="br.com.rodrigo.sehab.bean.CaracterizacaoBean" %>



Rodrigo










HABISP - Consulta

Nº Funep Nome
<%=request.getAttribute("codFunep") %> <%=request.getAttribute("nomeArea") %>











[code]

Minha Servlet:

[code]

package br.com.rodrigo.sehab.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import br.com.rodrigo.sehab.bean.CaracterizacaoBean;
import br.com.rodrigo.sehab.dao.CaracterizacaoDAO;

/**
* Servlet implementation class CadastroImagem
*/
public class CadastroImagemServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public CadastroImagemServlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher(
"/pages/caracterizacao/cadastro_imagem.jsp");
CaracterizacaoDAO caracterizacaoDAO = new CaracterizacaoDAO();
CaracterizacaoBean caracterizacao = caracterizacaoDAO
.consultarCaracterizacaoByCodFunep(request
.getParameter("codFunep"));

request.setAttribute("codFunep", caracterizacao.getCodFunep());
request.setAttribute("nomeArea", caracterizacao.getNomeArea());

dispatcher.forward(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// Check that we have a file upload request
System.out.println("FILE UPLOAD");

//Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
System.out.println("isMultipart:[" + isMultipart + "]");

//Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();

//Set factory constraints
factory.setSizeThreshold(1000000);
factory.setRepository(new File("e:\\temp"));

//Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);

//Set overall request size constraint
upload.setSizeMax(1000000);

//Parse the request
try {
List items = upload.parseRequest(request);

//Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();

if (item.isFormField()) {
System.out.println("item.getFieldName():[" + item.getFieldName() + "]");
System.out.println("item.getString():[" + item.getString() + "]");
} else {
System.out.println("item.getFieldName():[" + item.getFieldName() + "]");
System.out.println("item.getName():[" + item.getName() + "]");
}
}
}catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

[code]

Meu prazo para entregar isso é quinta-feira, então estou no desespero mesmo implorando uma ajuda!

Obrigado.

3 Respostas

balrog

ta pagando quanto?

Master.Abs

Dica > Coloque seu codigo dentro da tag [code] para facilitar o entendimento! Vlw.

Master.Abs

Não sei se ajuda mas quando eu faço esse processo de salvar imagem no banco de dados, eu costumo converter o arquivo de imagem em
BASE64 que gera uma String Gigante e faço uma chamada na página web para exibir essa imagem quando preciso,
com isso fico isento de salvar o caminho do arquivo no BD e se um dia mudar o caminho do arquivo não haverá problemas, pois o que foi
salvo no banco foi o arquivo que foi convertido em BASE64.

Segue o exemplo do código:

import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.imageio.ImageIO;

import sun.misc.BASE64Encoder;

public class Image2Base64 {
	public static void convertImageToBase64(String path) {
		convertImageToBase64(new File(path));
	}
	/**
	 * IMPORTANTE:
	 * Para que a conversão ocorra com sucesso os parametros de extensao do arquivo
	 * deve ser o mesmo que o definido no 
	 * ImageIO.write(null, "png", null); 
	 * e no 
	 * src="data:image/EXTENSAO;base64,..../>
	 * Extensoes permitidas são: gif, jpg e png
	 * 
	 */
	public static void convertImageToBase64(File file) {
		if (!file.exists()) {
			System.out.println("Arquivo não encontrado !");
			return;
		}
		try {
			BufferedImage bufferImg = ImageIO.read(file);
			ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
			// Se o arquivo for png, gif ou jpg deve ser especificado no write
			ImageIO.write(bufferImg, "jpg", outputStream);

			byte[] data = outputStream.toByteArray();

			// Convertendo arquivo de imagem em BASE64
			String imagemBASE64 = new BASE64Encoder().encode(data);
			
			//Imprime o encode BASE64
			System.out.println(imagemBASE64);
			
			// Imprime a construção do html para exibição da imagem.
			System.out.println("\n*************TAG HTML*************");
			StringBuffer b64ImageHtmlPNG = new StringBuffer();
			b64ImageHtmlPNG.append("<html>");
			b64ImageHtmlPNG.append("<body>");
			b64ImageHtmlPNG.append("<h1>Image</h1>");
			b64ImageHtmlPNG.append("<img alt=\"Embedded Image\" src=\"data:image/png;base64,").append(imagemBASE64).append(" \"/>");
			b64ImageHtmlPNG.append("</body>");
			b64ImageHtmlPNG.append("</html>");
			
			// SAIDA DO ARQUIVO DE TESTE COM A  IMAGEM.
			File html = new File("/TesteB64.html");
			BufferedWriter writer = new BufferedWriter(new FileWriter(html));
			writer.write(b64ImageHtmlPNG.toString());
			writer.flush();
			writer.close();
			
			System.out.println("Arquivo html gerado em: " + html.getAbsolutePath());
			
			outputStream.close();

		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("Não foi possível converter BASE64");
		}
	}

	public static void main(String[] args) {
		String path = "Caminho da imagem";
		File file = new File(path);
		convertImageToBase64(file);
	}
}
Criado 3 de abril de 2012
Ultima resposta 3 de abr. de 2012
Respostas 3
Participantes 3