我在做现实图片的时候遇见这样的问题:
第一种出错方式:在struts2的action中写上这个方法:
public void showImg(){ HttpServletResponse response = ServletActionContext.getResponse();
ServletOutputStream out = null;
FileCtrl file = this.fileService.getFileDao().getFileById(this);//方便测试,直接调dao查出图片
try {
out = response.getOutputStream();
byte[] len = new byte[1024];
while(true){
int size = file.getImage().getBinaryStream().read(len);
if( -1 == size ){
break;
}
out.write(len);
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在页面使用连接
<a href="fileCtrl!showImg.action?id=<s:property value="id"/>">打开图片</a>
它就报这样一个异常:Caused by: java.net.SocketException: Connection reset by peer: socket write error
问题出在while循环中的out.write(len);调试过,它循环好多次才抛出的异常,不知道怎么解决!
--------------------------------------------------------------------------------------------
遇见问题后,我想使用另一种方法
直接在页面写jsp代码显示图片,方法如下:
InputStream is = file.getImage().getBinaryStream();
response.setContentType("image/jpeg");
response.setContentLength(is.available());
while(true){
int size = is.read();
if( -1 == size ){
break;
}
out.write(size);
}
is.close();
这样的话,显示出来全是乱码!
请问要如何解决从数据库中读取图片并显示!
第一种出错方式:在struts2的action中写上这个方法:
public void showImg(){ HttpServletResponse response = ServletActionContext.getResponse();
ServletOutputStream out = null;
FileCtrl file = this.fileService.getFileDao().getFileById(this);//方便测试,直接调dao查出图片
try {
out = response.getOutputStream();
byte[] len = new byte[1024];
while(true){
int size = file.getImage().getBinaryStream().read(len);
if( -1 == size ){
break;
}
out.write(len);
} } catch (Exception e) {
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在页面使用连接
<a href="fileCtrl!showImg.action?id=<s:property value="id"/>">打开图片</a>
它就报这样一个异常:Caused by: java.net.SocketException: Connection reset by peer: socket write error
问题出在while循环中的out.write(len);调试过,它循环好多次才抛出的异常,不知道怎么解决!
--------------------------------------------------------------------------------------------
遇见问题后,我想使用另一种方法
直接在页面写jsp代码显示图片,方法如下:
InputStream is = file.getImage().getBinaryStream();
response.setContentType("image/jpeg");
response.setContentLength(is.available());
while(true){
int size = is.read();
if( -1 == size ){
break;
}
out.write(size);
}
is.close();
这样的话,显示出来全是乱码!
请问要如何解决从数据库中读取图片并显示!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货