第一步:xml配置
<action name="download" class="action.netDiskAction.DownloadAction">
<!-- 文件名 -->
<param name="fileName"></param>
<result name="success" type="stream">
<!-- 类型-->
<param name="contentType">text/plain</param>
<!-- 前台链接参数 -->
<param name="contentDisposition">attachment;filename="${downloadChineseFileName}"</param>
<param name="inputName">downloadFile</param>
</result>
<result name="downloaderror" type="chain">showResList</result>
</action>
第二步: 类的实现
import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 个人中心资源问答下载附件实现
*/
public class DownloadAction extends ActionSupport {
private String fileName; // 文件名和文件路径
private String newFileName; // 用于下载后显示的文件名
private boolean isExists; // 用户判断文件是否存在
private int toPage; // 下载资源所在的当前页面
// 从下载文件原始存放路径读取得到文件输出流
public InputStream getDownloadFile() {
return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);
}
// 如果下载文件名为中文,进行字符编码转换
public String getDownloadChineseFileName() {
String downloadChineseFileName = newFileName;
try {
downloadChineseFileName = new String(downloadChineseFileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downloadChineseFileName;
}
public String execute() {
String basePath = ServletActionContext.getServletContext().getRealPath("");
String filePath = basePath + fileName;
File file = new File(filePath);
if (!file.exists()) {
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("message", "文件已经不存在,请联系管理员!");
// 如果topage为0时,说明在第一页,需要进行重新设置为1
if (toPage == 0) {toPage = 1;}
return "downloaderror";
} else {
return SUCCESS;
}
}
public String getFileName() {return fileName;}
public void setFileName(String fileName) {this.fileName = fileName;}
public String getNewFileName() {return newFileName;}
public void setNewFileName(String newFileName) {this.newFileName = newFileName;}
public int getToPage() {return toPage;}
public void setToPage(int toPage) {this.toPage = toPage;}
}
相关推荐
标题中的“K8_Struts2_EXP S2-045 & 任意文件上传 20170310”指的是一个与Struts2框架相关的安全漏洞,具体为S2-045漏洞,该漏洞允许攻击者进行任意文件上传。20170310可能是漏洞被发现或公开的日期,也可能是指该...
1. 解压文件:首先,你需要将下载的压缩包"K8_Struts2_EXP S2-045 & 任意文件上传 20170310"解压到本地目录。 2. 运行检测:运行K8_Struts2_EXP工具,指定要扫描的Struts2项目路径。 3. 分析报告:工具会生成一个...
标题中的"K8_Struts2_漏洞利用工具"是一个专门为测试和研究这些漏洞而设计的工具。它可以帮助安全研究人员和开发者了解漏洞的工作原理,以及如何检测和防御此类攻击。使用这个工具,用户可以模拟攻击者的行为,检查...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
首先,我们来看标题"NetBeans7.2_struts2_plugin",这表明我们要讨论的是在NetBeans 7.2版本中用于支持Struts2开发的插件。这个插件是NetBeans IDE为了提供Struts2框架的开发辅助工具而设计的,它包括了对Struts2...
【轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发】这个主题主要涉及的是Java EE领域中的三大框架——Struts2、Spring3和Hibernate的集成应用,这是构建现代Java后端系统的一种常见方式。这些框架...
在"struts2_jar"压缩包中,可能包含的文件除了Struts2的核心库之外,还可能有相关的示例代码、配置模板或其他辅助开发的工具。通过理解和掌握这些知识点,可以有效地利用Struts2构建高效、可维护的Web应用。
]10 S2-045 CVE-2017-5638 支持GetShell/获取物理路径/执行CMD命令 [+]9 devMode CVE-xxxx-xxxx 支持GetShell/获取物理路径/执行CMD...[+]1 S2-005 CVE-2010-1870 支持GetShell/获取物理路径/执行CMD命令/列文件目录
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
`struts2_ant.jar` 文件是Struts2框架的一个组成部分,它包含了Ant构建工具相关的类和资源,Ant是一个广泛使用的Java项目自动化构建工具。 在Struts2框架中,Ant常被用来自动化项目的构建过程,如编译源代码、打包...
在"Struts2_Dwr.rar"的压缩包中,可能包含了以下文件: 1. `struts.xml`:Struts2的配置文件,定义了Action及其相关的配置。 2. `dwr.xml`:DWR的配置文件,声明了可被JavaScript访问的服务器端方法。 3. `...
综上所述,"Struts2_CRUD"示例涵盖了使用Struts2框架进行基本数据操作的核心概念和实践。通过学习这个示例,初学者可以理解如何在Struts2中组织Action、Form、Interceptor、配置文件和视图,以及如何实现CRUD操作和...
"Struts2_0400_Path"这个标题和描述暗示了这是一个关于Struts2框架中路径配置的学习资料,可能是针对Struts2的一个特定漏洞或版本更新进行的讲解。在Struts2框架中,路径配置是非常关键的部分,它涉及到请求的映射、...
Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询...Struts2_06FileUpload : Struts2上传文件的使用
`Struts2_API.chm`文件是一个帮助文档,通常以CHM(Compiled HTML Help)格式存在,这是一种由微软开发的、用于存储HTML文档的压缩格式,便于离线阅读。CHM文件包含索引、搜索功能,使得用户可以快速找到所需的信息...
struts.xml文件中新增以下内容: <!-- 为修复struts2 s2-016、s2-017...struts2_s2-016&017_patch.jar拷贝到lib目录下。 ognl-2.6.11.jar直接覆盖掉原有文件。 使用工具进行测试漏洞是否依然存在。 2013年7月25日
Struts2_OGNL Demo 是一个用于演示Struts2框架中OGNL(Object-Graph Navigation Language)表达式语言的实例。这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的...
标题中的"K8_Struts2_EXP S2-045 20170310.rar"提到了一个特定的安全漏洞——S2-045,这是Struts2框架中的一个严重问题,影响了多个版本的Struts2。 S2-045漏洞,全称为"Struts2 OGNL注入漏洞",源于Struts2框架...
这个压缩包文件“struts2_api.rar”包含了关于Struts2框架的API文档,是开发者理解和使用Struts2框架的重要参考资料。以下是这个API文档中涵盖的关键知识点: 1. **Action接口与ActionSupport类**:在Struts2中,...