SSH入门系列5:struts2实现下载功能

本文详细介绍了如何在Struts框架中配置文件下载功能,包括jsp页面设置、Action方法定义及struts.xml配置,确保文件能正确下载并显示动态文件名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp页面如下设置:

<body>
<a href="myuser/UserAction">点击下载</a>

</body>

随后在Action里面定义方法

public InputStream getDownloadFile() throws Exception{

        System.out.println(666);
        this.fileName ="1.jpg";
        return ServletActionContext.getServletContext().getResourceAsStream("/upload/1.jpg");   
}

 

注意:这里返回类型是InputStream

          同时方法名取值为get**()与下面struts.xml相对应

 

struts.xml做如下设置:


     <action name="UserAction"  class="com.action.UserAction"    >
        <result  name="success"  type="stream">
             <param name="contentType"> image/jpeg</param>
             <param name="contentDisposition" > attachment ;fileName="${fileName}"  </param>
             <param  name="inputName">downloadFile</param>
             <param name="bufferSize" >1024</param>
     </result>
     </action>

注意:这里的结果类型必须是type="stream"

  <param name="contentDisposition" > attachment ;fileName="${fileName}"  </param>

这里的contentPosition默认是inline,即内联样式,具体实现方式是:如果能在网页打开,就在网页打开,否则将会自己选择。

attachment:下载时会打开下载框。fileName="${fileName}动态显示文件名。

  <param name="inputName" > downloadFile</param>这里的文件名必须与Action里面 get**()方法保持一致。否则会报

java.io.FileInputStream cannot be cast to java.lang.String这个错误

 

转载于:https://my.oschina.net/u/3533686/blog/1492157

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值