struts2 下载文件
2024-08-29 08:53:14
作者:禅楼望月
当下载的文件名字中不含有汉字,或者下载的文件不需要考虑用户的权限问题时。直接让超链接的href属性为所要下载的文件名即可。否则最好使用struts2的文件下载机制。
以下载图片为例
完整的代码:
action:
import java.io.File; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; public class FileDownloadAction implements Action{ private String filepath=null; private InputStream inputStream=null; public void setFilepath(String filepath) { this.filepath = filepath; } public InputStream getFile(){ return inputStream; } @Override public String execute() throws Exception { String filename=ServletActionContext. getRequest().getParameter("filename"); inputStream=ServletActionContext. getServletContext().getResourceAsStream(filepath+ File.separator+filename); if(inputStream!=null){ return SUCCESS; }else { return ERROR; } } }
struts.xml配置:
<package name="syxpj" extends="struts-default" namespace="/syxpj"> <action name="download" class="download" > <result name="success" type="stream"> <param name="contentType">image/jpg</param> <param name="inputName">file</param> <param name="contentDisposition">filename="${request['filename']}"</param> <param name="bufferSize">1024</param> </result> </action> </package>
使用:
<a href="${pageContext.request.contextPath}/syxpj/download.action?filename=belle.jpg">数据模板</a>
其他文件只需要将action 的result的contentType参数变为相应的值即可。
注意:getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
最新文章
- 非空二叉树的一个有趣的性质:n0 = n2 + 1
- nodePPT初认识启动与手机控制
- MVC ,Action方法传数据给视图有几种方式?--PS:tempData和Viewbag,还有ViewData之间的区别
- Ubuntu 14.04中文输入法的安装
- C#2
- Unity3d:播放物理目录下的MP3文件
- android studio class org.bouncycastle.asn1.asn1primitive overrides final method equals
- openURL的使用方法
- HashTable和HashMap的区别
- unity 距离某天还有多久
- 无显示仍然发挥树莓派——VNCserver设定
- ANDROID PAD版本号 PHONE版本号 源代码有什么 差别?
- 最新虚拟机SAP ECC6.0 EHP7带示例数据IDES版+BW740
- redis集群搭建及注意事项
- C#导出EXCEL没有网格线的解决方法
- SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层
- Python教学课程分享
- eclipse 设置
- MOOC Linux内核之旅小结【转】
- MyBatis从入门到放弃二:传参