En una variable String almacenamos la ruta del archivo mediente un parametro:
String file = request.getParameter("file");
Mediante un BufferedInputStream que crea una matriz indefinida a medida que lee los bytes de flujo de la imagen que se mostrara y mediante el FileInputStream que se encarga de crear el objeto o la imagen en este caso, retomamos lo que trate de decir haremos que se cree la imagen y despues que se obtengan los bytes para luego mostrarlo en el dataGrid que se encarga de cargarlo mediente los byte, recordemos que el file que recibe es del string que obtiene la ruta completa de la imagen y la linea quedaria asi:BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
Esto solo fue para obtener la imagen de la ruta ahora vamos a contener el contenido en este caso el tamaño que se lee en bytes que esta almacenada en la variable "in" de BufferedInputStream, crearemos un arreglo de bytes y le pasamos los bytes de la imagen seleccionada al arreglo mediente el metodo available que devuelve una estimación del número de bytes que se pueden leer de este flujo de entrada sin bloquear por la siguiente invocación de un método para el flujo de entrada. Despues leemos los bytes y cerramos el codigo seria de esta forma:
byte[] bytes = new byte[in.available()];
in.read(bytes);
in.close();
Por ultimo escribimos en el Response de HttpServlet para escribirlo o en este caso mostrar la imagen:response.getOutputStream().write(bytes);
El codigo de la clase la muestro a continuacion:public class DynamicImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// Obtenemos la imagen
String file = request.getParameter("file");
System.out.println("Ruta-->" + file);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
// Obtenemos el contenido de la imagen
byte[] bytes = new byte[in.available()];
in.read(bytes);
in.close();
// Escribimos el contenido de la imagen
response.getOutputStream().write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private List<Imagen> listResource;
y agregamos los getters y setters:
public List<Imagen> getListResource() {
return listResource;
}
public void setListResource(List<Imagen> listResource) {
this.listResource = listResource;
}
Y nuestra lista se manda como valor en el DataGrid, en la parte de p:graphicImage se manda el valor de la imagen "images/dynamic/?file" en donde file es el parametro donde creamos la clase que puse anteriormente
Amigo es muy buena tu ayda pero seria bueno que hicieras videos sobre esta magnifica explicacion
ResponderEliminar