我有一个bytearray图像。
我需要在jsp页面中以jpg格式显示该图像,在点击图像时,我可以将图像下载到我的电脑上:
我正在将我的mysql数据库中的图像作为字节数组加载..
我的代码是
ResultSet res = statement.executeQuery("SELECT * FROM
upload_data where user_id = "+userID);
while (res.next()) {
contactDetails = new ContactDetails();
contactDetails.setContactPhoto(res.getBytes("photo"));
byteArrayBackToImage1(res.getBytes("photo"));
contactsList.add(contactDetails);
}
public void byteArrayBackToImage1(byte[] imageInByte){
try{
Random rand = new Random();
int numNoRange = rand.nextInt();
String number = String.valueOf(numNoRange);
//convert byte array back to BufferedImage
InputStream in = new ByteArrayInputStream(imageInByte);
BufferedImage bImageFromConvert = ImageIO.read(in);
System.out.println("bImageFromConvert : "+bImageFromConvert);
/*ImageIO.write(bImageFromConvert, "jpg",
new File("c:\\"+number+".jpg")); */
}catch (Exception e) {
// TODO: handle exception
}
我需要在jsp中显示图像
例如:image.jpg image2.jpg
通过单击image.jsp,我可以下载该图像并将其保存到我的电脑
请帮忙
答案 0 :(得分:13)
您在JSP中生成的HTML必须包含一个img元素,其中src指向servlet或action的URL,该URL将从数据库加载图像并将其发送到具有image / jpeg内容类型的输出流。
// in your HTML :
<img src="/getImage.action?imageId=${id_of_the_image}"/>
// in the servlet mapped to /getImage.action:
// get the ID of the image from the request parameters
String imageId = request.getParameter("imageId");
byte[] imageData = getImageFromDatabase(imageId);
response.setContentType("image/jpeg");
response.getOutputStream().write(imageData);
所有浏览器都有一个右键单击 - 将图像另存为...菜单项,因此我不会在应用程序中实现此功能。
答案 1 :(得分:4)
<强> JSP:强>
<div id="profileDiv" style="padding: 10px; border: solid 2px #D6D6D6;">
<img src="imageDisplayProcess.do?pKey=<c:out value="${staff.staffId}" />"
width="117" height="160"
onError="loadImage()" onAbort="loadImage()" />
</div>
Servlet // imageDisplayProcess
imgByt = imageClass.getPhotograph();//return blob...
response.setContentType("image/jpg");
response.getOutputStream().write(imgByt);
response.getOutputStream().flush();
response.getOutputStream().close();