因为老师的无理要求..浪费了不少青春研究了下struts2中如何从数据库中读写图片
很多图片资源可以以2进制流的形式存储在数据库中,虽然这样做并不是太好.
在struts中如果想通过一个action下载或者在页面展示一个图片其实也很简单
首先在写一个action 比如 WebAction 在其中需要几个变量
String fileName;
InputStream is;
并且提供setter getter方法
并且定义一个方法 public String ShowImg()
例如sql server从数据库中一个image类型或者varbinary类型 取出一个byte[] b; 这里方法比较多 可以直接通过jdbc 得到resultset.getBinaryStream() 或者 直接用orm框架像hibernate得到 比较方便
下一步 is = new ByteArrayInputStream(b);(如果数据库存的是图片地址 可以根据地址 实例化一个java.io.File 对象 , is = new FileInputStream(file))
下一步给 fileName 赋个值
之后return "showImg" 之后就可以配置struts.xml了
<action name="web" class="com.turing.shop.admin.web.WebAction">
<result name="showImg" type="stream" >
<param name="contentType">application/zip</param>
<param name="inputName">is</param>
<param name="contentDisposition">inline;filename="${fileName}"</param>
<param name="bufferSize">1024</param>
</result>
</action>
is 和 fileName 要和action中的保持一致
inline是以内联的方式显示 这个图片可以被浏览器直接打开并且显示.如果改成attachment 的话则会弹出下载框直接下载
在页面上可以 <img src="${pageContext.request.contextPath}/web!showImg.action">来显示图片