mira esto es lo que he hecho
funcion que me retorna la imagen
esta funcion la tengo en un archivo llamado MYSQLDAO, estoy usando patrones de diseño
Cita: public Image obtenerImagenBD(int i) throws Exception {
ResultSet rs = null;
Connection con = MysqlDAOFactory.getconnection();
if ( con != null) {
// Ejecutamos la consulta SQL que se pasa como parámetro
try {
Statement st=con.createStatement();
rs = st.executeQuery("select id,nombre,contenido,tamanio from archivosfotos where id="+ i);
if (!rs.next()) { // si no encntrada
System.out.println("Imagen:" + i + " no encontrada");
return null;
}
int len = rs.getInt("tamanio"); // longitud de la imagen
byte[] b = new byte[len]; // array de bytes
InputStream in = rs.getBinaryStream("contenido"); // leemos
int n = in.read(b);
System.out.println("n: " + n);
in.close();
// Creamos una imagen a partir de un array de bytes
Image img = Toolkit.getDefaultToolkit().createImage(b);
//System.out.println("Imagen: " + i +" recibido con éxito, tamaño: " + len);
return img;
}
catch (SQLException e) {
System.err.println("Error al acceder al registro: " + e.getMessage());
}
try {
rs.close();
}
catch (SQLException ex) {
}
con.close();
}
return null;
}
el dopost del servlet
está compuesto de dos partes una con el codigo que me sube el archivo y
otra con el codigo que supuestamente me debiera traer las imagenes
Cita: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MysqlArchivoDAO datos=new MysqlArchivoDAO();
//MysqlArchivoDAO datos=new MysqlArchivoDAO();
String comentario=request.getParameter("comentario");
String direccion=request.getParameter("uploadfile");
String respuesta="";
Archivo file=new Archivo();
ObtenerSubString sub=new ObtenerSubString();
String nombreArchivo=sub.nombreArchivo(direccion);
file.setDireccion(direccion);
file.setNombreArchivo(nombreArchivo);
file.setComentario(comentario);
if(datos.insertarImagenBD(file)==true){
respuesta="archivo subido exitosamente";
}else{
respuesta="no se logró subir el archivo";
}
/*******************************/
/*obtener imagenes*/
int cant=datos.cantidadFotos();
Image img;
String str="";
for(int i=1; i<cant;i++){
try {
img=datos.obtenerImagenBD(i);
response.setContentType("image/jpg");
request.setAttribute("imagen"+i,img);
//str+="<td><img src="+datos.obtenerImagenBD(i)+"></td>";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(str);
//request.getContentType();
//request.getContentType();
request.setAttribute("cantidad",new Integer(cant));
request.setAttribute("imagenes", str);
/********************************/
request.setAttribute("respuesta", respuesta);
request.getRequestDispatcher("/subirfoto.jsp").forward(request, response);
}
ahora me falta lo que debiera recibir el jsp pero no se como aplicarlo
habia pensado algo como <img src="img"> con los respectivos <%%>pero el problema de esto es que el img que retorna el servlet no está con el formato jpg, es como si fuera un
archivo sin extension. eso del conten-type nolo entiendo mucho, si alguien me pudiera ayudqr les estaría agradecido
nos vemos