提供文件下载的方式可以是通过超链接,也可以通过流。通过超链接的方式,如<a href="file\a.txt" \>,代码简单,但是浏览器如果可以打开,就会直接打开,任何用户只要有链接就可以下载,无法控制下载权限。通过流的方式就能对权限进行控制。
action处理类
public class DownloadAction {
private String fileName;
public String download(){
//此处可以处理 权限 等
return Action.SUCCESS;
}
public InputStream getInputStream() throws FileNotFoundException {
String path = ServletActionContext.getServletContext().getRealPath("/download");
return new FileInputStream(new File(path, fileName));
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
System.out.println(fileName);
}
}
通过这种路径,download文件夹在与web-inf在同一级目录下
jsp页面
<a href="download.action?fileName=click1.exe">click.exe Beta</a><br/>
<a href="download.action?fileName=click2.exe">click.exe Alpha</a>
struts.xml文件
<package name="default" namespace="/" extends="struts-default">
<action name="download" class="com.action.DownloadAction" method="download">
<result type="stream">
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;fileName=${fileName}</param>
</result>
</action>
</package>
第一个pram的值可以自定义,如果自定义为 myStream,则处理类的getInputStream应改为getMyStream