struts2 檔案下載
阿新 • • 發佈:2018-12-19
提供檔案下載的方式可以是通過超連結,也可以通過流。通過超連結的方式,如<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