public class Download {
// 下载文件的文件名,通过URL参数获取
private String fileName;
// struts.xml配置文件获取下载文件的存放目录,相对于web应用的目录,相对路径。
private String path;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public void setPath(String path) {
this.path = path;
}
// 该方法对应result元素的inputName的属性值为targetFile
public InputStream getTargetFile() throws Exception{
String url = path + File.separator + fileName; // 文件目录
System.out.println(url);
return ServletActionContext.getServletContext()
.getResourceAsStream(url);
}
public String execute() throws Exception{
/*
* 此处可以写一些业务代码,如权限或者是否存在下载的目录等业务流程。
*/
return "success";
}
}
// 下载文件的文件名,通过URL参数获取
private String fileName;
// struts.xml配置文件获取下载文件的存放目录,相对于web应用的目录,相对路径。
private String path;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public void setPath(String path) {
this.path = path;
}
// 该方法对应result元素的inputName的属性值为targetFile
public InputStream getTargetFile() throws Exception{
String url = path + File.separator + fileName; // 文件目录
System.out.println(url);
return ServletActionContext.getServletContext()
.getResourceAsStream(url);
}
public String execute() throws Exception{
/*
* 此处可以写一些业务代码,如权限或者是否存在下载的目录等业务流程。
*/
return "success";
}
}
struts.xml文件配置:
<action name="download" class="com.dcsoft.fileupload.Download">
<param name="path">/upload</param>
<result type="stream" name="success">
<!-- <param name="contentType">text/plain</param> -->
<param name="inputName">targetFile</param>
<!--动态获取文件名,这点很用实用价值!-->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
html:
<a href="download.action?fileName=abc.txt">下载</a>