1. 程式人生 > >struts2 檔案下載

struts2 檔案下載

提供檔案下載的方式可以是通過超連結,也可以通過流。通過超連結的方式,如<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