您的位置:首页 > 编程语言 > Java开发

struts2基于注解的文件下载

2015-11-16 13:54 465 查看
参数说明:

type = "stream",这里的type一定要等于stream;

对params的几个参数的解释:

"contentType", "application/octet-stream" : 文件格式;

"inputName", "attachstream" :获取文件的方法名;这里的attachstream需要和action里的attachstream对应,类型就是InputStream;

"contentDisposition", "attachment;filename=\"${attachname}\"":文件内容(显示的)属性,

这里的filename=\"${attachname}\" :下载之后的文件名;这里需要在action里定义一个变量,去获取下载文件的文件名,包括后缀,例如:下载的文件为**/**/upload/test.jpg,那么需要定义一个变量attachname,变量名一定要对应,然后,attachname = test.jsp;

"bufferSize", "4096" :限定下载文件 缓冲区的值;

通过上述属性的解释,我们可以知道,在action里需要定义的变量有以下几个:

private InputStream attachstream;//文件读取流对象

private String attachname;//下载文件的名字

然后需要对应的getter/setter方法,

action实现代码如下:

@Action(value = "/admin/toDownload",
results = {@Result(name = "download", type = "stream",
params = {
"contentType", "application/octet-stream",
"inputName", "attachstream",
"contentDisposition", "attachment;filename=\"${attachname}\"",
"bufferSize", "4096"
})})
public String toDownload(){
String path = ServletActionContext.getServletContext().getRealPath("/" + fileName);//fileName是页面传过来的参数
try {
attachstream = new FileInputStream(path);
String []attachnames = fileName.split("/");
attachname = attachnames[attachnames.length - 1];
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "download";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: