miércoles, 11 de febrero de 2009

Leer imagenes de una base de datos mediante WEB

/**
*
*/
package archivo.img.action.dispatch;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import archivo.img.service.MetodoService;




/**
* Nilton Joaquin
*
*/
public class ImgBytesDispatch extends DispatchAction {

public ActionForward grabar_img(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("entro a grabar_img-ImgBytesDipatch");

try {

//creamos una fabrica para disk-based para c/u item recibido-----------------
DiskFileUpload fabrica = new DiskFileUpload();

//recuperamos las peticiones recibidas (request)-----------------------
List items=fabrica.parseRequest(request);

//verificamos si existen peticiones--------------------------------------
if(items==null){
System.out.println("items nulos");
request.setAttribute("mensaje", "No existe peticion alguna");
return mapping.findForward("falla");
}

//adjunto msn de los ficheros subidos------------------------------------
System.out.println("El numero de fichero es:"+items.size());

//iteramos x c/u fichero------------------------------------------------
Iterator i=items.iterator();
FileItem actual=null;
System.out.println("Entramos al interaccion");

while (i.hasNext()) {
//recupero el item
actual=(FileItem)i.next();

//captura el nombre
String nom_archivo=actual.getName();
System.out.println("Nos han subido el archivo: "+nom_archivo);

//construimos un File para recuperar el trayecto
File archivo=new File(nom_archivo);
System.out.println("El nombre del archivo es: "+archivo.getName());

//escribimos el archivo en su path
actual.write(archivo);
FileInputStream streamEntrada = new FileInputStream(archivo);
int len = streamEntrada.available();

MetodoService s=new MetodoService();

//s.registrar_encapsulado(new BASE64Encoder().encode(actual.get()));
InputStream istream=actual.getInputStream();
s.registrar_normal(istream);
}




} catch (Exception e) {
System.out.println("Error de aplicacion: "+e.getMessage());
}
request.setAttribute("mensaje", "carga exitosa");

return mapping.findForward("grabar_img");
}

/*
*------------------------------------------------------------------------
*METODO PARA LEER LAS IMG
*------------------------------------------------------------------------
*/
public ActionForward leer_img(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("entro a leer_img-ImgBytesDipatch");

String id_img=request.getParameter("id_img");
response.setContentType("Content-type: image/jpeg");
//creo flujo de salida------------------------------------------
ServletOutputStream out=response.getOutputStream();

//recuperar la img en bytes como InputStrem---------------------
MetodoService s=new MetodoService();
InputStream isStream=s.cargar_img(id_img);

//Definimos un buffer de lectura. Se le asigna el tama�o 1024---
byte[] rb = new byte[1024];

//Leemos el flujo de entrada------------------------------------
int ch = 0;
while ((ch = isStream.read(rb)) != -1) {
System.out.println(ch);
out.write(rb, 0, ch); // Escribimos en el flujo de salida
}

isStream.close();
out.close();

return null;
}

}

1 comentario:

Anónimo dijo...

RosaitHola........vaya te especialzias en java ...sabes yo buscana esto de leer imagenes pero bueno yo uso .net ..la logica debe ser la misma.en fin.ya encontre igual como hacerla.interesnte tu pones tus codigos,los mios solo los dejo en mi proyecto.