jsp img标签显示二进制图片出现红叉

图片是从mysql数据库读取的,action方法可以走的 之前写好的程序可以显示,现在不能显示了,数据库中也存在图片。
action:
public String photos(){
String aaccount = servletRequest.getParameter("aaccount");
AgentInfo agent11=new AgentInfo();
agent11=agentDao.findByAccount(aaccount);
inputStream=new java.io.ByteArrayInputStream(agent11.getPhotos());
System.out.println("photos");
return SUCCESS;
}
jsp:
<img src="photos.action?aaccount=${agentInfo.aaccount}" width="141" height="150" border="0"/>
struts:
<action name="photos" class="com.elite.action.AgentAction" method="photos">
<result type="stream">
<param name="contentType">image/*</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">filename="photo"</param>
<param name="bufferSize">409600</param>
</result>
</action>

用struts2来获取图片的话,建议是用其中的response的输出流。。
response.setContentType("image/jpeg");
--
OutputStream out=(response.getOutputStream());
--
ImageIO.write(image, "JPEG", out);
--
out.flush();
--
out.close()追问

请问我贴出来的代码有什么地方错了吗?

追答

必须有错。
你在img标签里面,你了解过src里面的是什么东西吗?
src里面,可以是文件,但是实际上,它会自动把它转换成一个输出流。。
所以,你的那部分就是错误了。
你可以用js来修改src里面的东西:
1、建立一个简单的action1,里面用我上面的代码来作为输出流
2、建立另外一个action2,来返回action1的请求地址(假如是放到pic_src的变量中)
3、用js来修改img标签中的src属性。。

所以,我觉得用action来做这些获取后台图片的麻烦,像这些需要输出流的东西(不是http的流),个人喜欢直接用servlet来做

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-20
直接在浏览器打开那个图片连接看可不可以打开追问

谢谢 问题已经解决