java - prácticos - Salida de un archivo de imagen de un servlet
servlet java (3)
Aquí está el código de trabajo:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
ServletContext cntx= req.getServletContext();
// Get the absolute path of the image
String filename = cntx.getRealPath("Images/button.png");
// retrieve mimeType dynamically
String mime = cntx.getMimeType(filename);
if (mime == null) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
resp.setContentType(mime);
File file = new File(filename);
resp.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();
// Copy the contents of the file to the output stream
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
out.close();
in.close();
}
Esta pregunta ya tiene una respuesta aquí:
¿Cómo servir una imagen, almacenada en mi disco duro, en un servlet?
Por ejemplo:
Tengo una imagen almacenada en la ruta ''Images/button.png''
y quiero ''Images/button.png''
en un servlet con el file/button.png
URL file/button.png
.
Aquí hay otra manera muy simple.
File file = new File("imageman.png");
BufferedImage image = ImageIO.read(file);
ImageIO.write(image, "PNG", resp.getOutputStream());
- mapear un servlet al
/file
url-pattern de/file
- leer el archivo desde el disco
- escríbelo en
response.getOutputStream()
- establecer el encabezado
Content-Type
enimage/png
(si solo es pngs)