一般是在页面实现一个超链接,该链接指向一个action请求,然后在对应的action类中进行一些属性的处理后直接返回“SUCCESS”,最后在action配置的result中用param配置参数完成文件的下载,先了解一下这些参数:
inputName:该参数指定action类中作为输入流的属性名。
contentType:用于指定下载文件的类型,若指定该参数,当下载一个图片类型时会直接在浏览器上打开,若不配置,则会直接下载到硬盘上。
bufferSize:指定下载文件时缓冲区的大小。
contentDisposition:用于指定下载文件在客户端的一些属性,下面请看部分代码:
JSP页面:
<a href="download.action">下载</a>
struts配置:
<action name="download" class="org.user.DownloadAction">
<!-- 传递参数,指定下载文件的路径 -->
<param name="download">/index.jsp</param>
<result name="success" type="stream">
<!-- 输入流的名字对应action类中的getTargetFile()方法 -->
<param name="inputName">targetFile</param>
<!-- 设置下载文件的文件名 -->
<param name="contentDisposition">fileName=index</param>
<!-- 指定下载时的缓冲区大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
action类:
public class DownloadAction extends ActionSupport {
private String downloadFile;//需要下载的文件路径
//生成set方法,该值由配置文件传递过来
public void setDownloadFile(String downloadFile) {
this.downloadFile = downloadFile;
}
//根据上面给出的晚间路径,生成它的输入流
public InputStream getTargetFile(){
return ServletActionContext.getServletContext().getResourceAsStream(downloadFile);
}
public String execute() throws Exception{
return SUCCESS;
}
}