找工作复习中--Struts2输出图片流到页面

来源:互联网 发布:mac磁盘工具 编辑:程序博客网 时间:2024/05/17 09:09

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

Action代码:

public String processImage(){String key = ServletActionContext.getRequest().getParameter("key");if(StringUtils.isEmpty(key)){return "nofindImage";//没有找到图片}ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()                  .processDefinitionKey(key)                  .singleResult();String diagramResourceName = processDefinition.getDiagramResourceName();InputStream imageStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);ServletActionContext.getContext().put("imageStream", imageStream);return "processImage";}

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

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

XML配置:在action中添加结果

<result name="processImage" type="stream">                <param name="contentType">image/png</param>                <param name="inputName">imageStream</param>                <param name="bufferSize">4096</param>         </result>


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

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

 

 

0 0
原创粉丝点击