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

struts-基础内容-8-文件下载

2016-12-08 18:02 281 查看
struts2文件下载需要action提供一个返回InputStream流的方法,代表了被下载文件的入口。
一:写action类

DownloadAction.java

package Action;

import com.opensymphony.xwork2.ActionSupport;
import java.io.FileInputStream;
import java.io.InputStream;

/**
* Created by cxspace on 16-7-12.
*/
public class DownloadAction extends ActionSupport{

//可以在配置文件中动态的指定该属性值,要下载文件的路径
private String inputPath;

public String getInputPath() {
return inputPath;
}

//依赖注入改属性值的方法
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}

/×
定义一个返回InputStream的方法,改方法將作为被下载文件的入口,且需要配置stream类型结果指定的inputName参数
inputName参数值就是方法去掉get前缀、首字母小写的字符串
×/
public InputStream getTargetFile () throws Exception {

return new FileInputStream(inputPath);
}
}


二:配置action

配置期望能键下载,关键是配置一个类型为stream的结果

结果中需要指定的四个关键属性

contentType:指定被下载文件的文件类型

inputName:指定被下载文件的入口输入流

contentDispostion:指定下载文件的文件名

bufferSize:指定下载文件时的缓冲大小

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="testFile" extends="struts-default">
<action name="download" class="Action.DownloadAction">
<!--输入文件的绝对路径-->
<param name="inputPath">/home/cxspace/a.txt</param>
<result type="stream">
<param name="contentType">application/txt</param>
<param name="inputName">targetFile</param>
<param name="contentDisposition">filename="a.txt"</param>
<param name="bufferSize">4096</param>
</result>
</action>
</package>

</struts>


用户访问接口-index.jsp

<%--
Created by IntelliJ IDEA.
User: cxspace
Date: 16-7-12
Time: 下午9:05
To change this template use File | Settings | File Templates.
--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页</title>
</head>
<body>
<form method="post" action="download">

<input type="submit" value="下载">

</form>

</body>
</html>


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: