struts2下载数据库中的图片

因为老师的无理要求..浪费了不少青春研究了下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">来显示图片

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值