第一步: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_漏洞利用工具,可利用Struts2_漏洞进行任意代码执行和任意文件上传。 本工具仅供学习交流,请勿用于任何非法活动。
K8_Struts2_EXP S2-045 & 任意文件上传 20170310,无密码,2017版,最新版
Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询...Struts2_06FileUpload : Struts2上传文件的使用
struts.xml文件中新增以下内容: <!-- 为修复struts2 s2-016、s2-017...struts2_s2-016&017_patch.jar拷贝到lib目录下。 ognl-2.6.11.jar直接覆盖掉原有文件。 使用工具进行测试漏洞是否依然存在。 2013年7月25日
使用struts2实现文件下载功能,可以直接运行!
程序进过本人亲测,附件中含SQL,用的是MySQL数据库,实现了带进度条的多文件上传,并提供下载功能,解压后可直接导入Eclipse,希望对你有所帮助。
传智播客struts2_3(拦截器_文件上传_输入验证_国际化).ppt
]10 S2-045 CVE-2017-5638 支持GetShell/获取物理路径/执行CMD命令 [+]9 devMode CVE-xxxx-xxxx 支持GetShell/获取物理路径/执行CMD...[+]1 S2-005 CVE-2010-1870 支持GetShell/获取物理路径/执行CMD命令/列文件目录
3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....
jspstruts1_2struts2 中文件上传 java文件上传
MultiFileUpload Struts2多文件 Struts2多文件上传 Struts2上传 Struts2文件上传,随手写的一个Demo实例
struts2_mybatis_spring_框架整合实例_数据库 源码中包括数据库文件 文档介绍
在struts2基础上实现的包括单文件、多文件的上传及下载
spring_struts2_mybatis的配置文件以及架包,适合入门整合框架的童鞋们。
Struct 2 S2-045/046 漏洞检测工具,可以有效检测我们服务是不是存在该漏洞,从而有效的解决漏洞,工具为exe的可执行文件,杀毒软件会自动禁用,只要手动恢复就可以用了。
使用的struts2_spring_ibatis框架,根据模板文件导出Excel
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
'fileDataName' : 'file' 因为在页面上没有加上这个属性,导致在aciton里边接收不到file文件,页面会显示:HTTP ERROR! /index.jsp return "upload"; 开始我这里没有返回值,直接return null,以为它是ajax...
struts2_2.16的XML配置文件,自己项目内的配置文件,上传做个备份,怕以后自己忘记了。