Struts2输出图片流到页面

来源:互联网 发布:淘宝怎么参加返利网 编辑:程序博客网 时间:2024/05/22 15:16

前言:今天做个功能需要展示图片到页面,并不是下载,在网上搜了老半天,大部分都是下载,有的话也是只能在IE下进行输出,其它浏览器就都是下载了。

Action代码:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. public String processImage(){  
  2.     String key = ServletActionContext.getRequest().getParameter("key");  
  3.     if(StringUtils.isEmpty(key)){  
  4.         return "nofindImage";//没有找到图片  
  5.     }  
  6.     ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()  
  7.                  .processDefinitionKey(key)  
  8.                  .singleResult();  
  9.     String diagramResourceName = processDefinition.getDiagramResourceName();  
  10.     InputStream imageStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);  
  11.     ServletActionContext.getContext().put("imageStream", imageStream);  
  12.     return "processImage";  
  13. }  

注:这里将InputStream放到了Struts2的对象站里面

此外,也可以通过在action中添加一个getInputName()的方法,在这个方法里面返回上面的InputStream

XML配置:在action中添加结果

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <result name="processImage" type="stream">  
  2.                <param name="contentType">image/png</param>  
  3.                <param name="inputName">imageStream</param>  
  4.                <param name="bufferSize">4096</param>  
  5.         </result>  


注:inputName的值对应了我们在action中放入对象栈的key,因为StreamResult的源码中获得inputName就是从栈中获取。

其它说明:网上部分代码是在action中将InputStream通过Response直接输出,并返回一个null,这样在ie下是可以直接显示图片,在其他浏览器里面都是下载的方式。

0 0
原创粉丝点击