Struts2文件下载

简介: 文件下载先给出一个超链接到下载的Action,这个作为下载文件在webContent目录下:给出超链接为: 下载DOC类型文件 参数以此为:文件名,文件类型,下载时的文件名; 下载文件需要在Struts配置文件中这样配置: ...

文件下载先给出一个超链接到下载的Action,这个作为下载文件在webContent目录下:给出超链接为:

<a href="down?res=算法范围.doc&resType=application/msword&resName=my.doc">下载DOC类型文件</a>

参数以此为:文件名,文件类型,下载时的文件名;

下载文件需要在Struts配置文件中这样配置:

       <action name="down" class="struts1.action.DownAction">
       		<result type="stream" name="success">
       			<!-- 该参数指定二进制流 -->
       			<param name="contentType">${resType}</param>
       			<!-- 指定IO流的入口 -->
       			<param name="inputName">target</param>
       			<!-- 指定下载时文件名 -->
       			<param name="contentDisposition">filename=${resName}</param>
       			<!-- 指定缓冲大小 -->
       			<param name="bufferSize">4096</param>
       		</result>
       </action>

相应的Action类的写法为:

public class DownAction extends ActionSupport {

	//下载文件主要有三种:1、下载的目标资源,2、下载文件类型,3、下载文件名
	private String res;			//下载目标资源
	private String resType;		//下载文件类型
	private String resName;	//下载文件名
	
	//下载文件IO流的入口
	public InputStream getTarget() throws IOException {
		String path = ServletActionContext.getServletContext().getRealPath("/");
		return new FileInputStream(path+res);
	}
	
	public String getRes() {
		return res;
	}
	public void setRes(String res) throws Exception{
		//对请求参数做处理
		this.res = new String(res.getBytes("ISO-8859-1"), "UTF-8");
	}
	public String getResType() {
		return resType;
	}
	public void setResType(String resType) {
		this.resType = resType;
	}
	public String getResName() {
		return resName;
	}
	public void setResName(String resName) {
		this.resName = resName;
	}
}
这个是通用的Struts2下载模板

目录
相关文章
|
11月前
|
分布式计算 DataWorks 数据处理
产品测评 | 上手分布式Python计算服务MaxFrame产品最佳实践
MaxFrame是阿里云自研的分布式计算框架,专为大数据处理设计,提供高效便捷的Python开发体验。其主要功能包括Python编程接口、直接利用MaxCompute资源、与MaxCompute Notebook集成及镜像管理功能。本文基于MaxFrame最佳实践,详细介绍了在DataWorks中使用MaxFrame创建数据源、PyODPS节点和MaxFrame会话的过程,并展示了如何通过MaxFrame实现分布式Pandas处理和大语言模型数据处理。测评反馈指出,虽然MaxFrame具备强大的数据处理能力,但在文档细节和新手友好性方面仍有改进空间。
|
API 网络安全
发送UDP数据免费API接口教程
此API用于向指定主机发送UDP数据,支持POST或GET请求。需提供用户ID、密钥、接收IP及端口、数据内容等参数。返回状态码和信息提示。示例中含公共ID与KEY,建议使用个人凭证以提高调用频率。
245 13
|
10月前
|
存储 人工智能 运维
2025开年AI王炸组合:Deepseek + Zabbix = 监控界“钢铁侠”
2025年,AI技术迎来爆发,中国黑马Deepseek以“硬核战斗力”登顶热搜,预判智能家居、降低自动驾驶事故率、挑战医疗诊断新高度,被誉为“人类外挂”。与此同时,Zabbix结合AI,推出智能运维助手,极大提升运维效率。Zabbix与Deepseek联手发起“脑洞大赛”,万元奖励等你来拿。未来,不懂AI的运维或将被淘汰,立即行动,成为监控界的“天选打工人”! 简介:2025年,AI技术全面革新,Deepseek和Zabbix引领智能运维新潮流,提供高效解决方案并发起创意大赛,助力运维人员掌握未来技能。
375 0
2025开年AI王炸组合:Deepseek + Zabbix = 监控界“钢铁侠”
|
网络协议
计算机网络的分类
【10月更文挑战第11天】 计算机网络可按覆盖范围(局域网、城域网、广域网)、传输技术(有线、无线)、拓扑结构(星型、总线型、环型、网状型)、使用者(公用、专用)、交换方式(电路交换、分组交换)和服务类型(面向连接、无连接)等多种方式进行分类,每种分类方式揭示了网络的不同特性和应用场景。
|
存储 前端开发 Java
Git 仓库越来越大?不要慌!试试这个简单方法,轻松秒瘦身
Git 仓库越来越大?不要慌!试试这个简单方法,轻松秒瘦身
|
前端开发 C# 开发工具
在winform中使用blazor hybrid构建页面
在winform中使用blazor hybrid构建页面
381 0
|
缓存 编解码 JavaScript
< 前端性能优化: 资源加载优化 >
众所周知,前端是由HTML、CSS、JS等文件资源共同作用下渲染构建出来的。现今前端项目,大多为单页面应用,单页面应用的优点非常多(点击跳转 SPA单页面讲解),但是也并非没有缺点。由于单页面的原因,项目所需资源都需要在初次加载首屏时被加载,这就造成了首屏加载性能受到影响!对于首屏性能优化,就衍生出了相关需要思考的问题。如何将首屏加载的资源,分段将需要的资源及时加载出来,避免页面内容不显示的同时,又能避免加载多余并非立刻需要使用的资源呢?
356 0
< 前端性能优化: 资源加载优化 >
|
数据可视化 图形学 Python
|
存储 缓存 测试技术
一种提高Unixbench测试分数的方法
一种提高Unixbench测试分数的方法
3561 0
一种提高Unixbench测试分数的方法
|
存储 缓存 前端开发
操作系统期末实验:多用户二级文件系统
操作系统期末实验:多用户二级文件系统
591 0