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

前言:今天做个功能需要展示图片到页面,并不是下载,在网上搜了老半天,大部分都是下载,有的话也是只能在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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WJL_MGQS

本不富裕的收入,还得买服务器

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值