java之struts2之文件下載


1.在實際應用開發中,文件下載功能也非常常見。

2.最簡單的文件下載方式是通過超鏈接來進行文件下載:

<body>
    <a href="download/s.txt">課件</a><br/>
    <a href="download/t.jpg">美女</a><br/>
    <a href="download/jstl-1.2.jar">jstl</a>
</body>

注意:直接通過超鏈接下載文件,如果瀏覽器能夠讀取文件,瀏覽器會直接讀取,而不會下載到本地。並且有安全問題。所以,可以通過action來實現下載。

3.Struts2文件下載功能的實現:

Action實現

public class DownloadAction {
    private String fileName;
    public String execute(){
        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;
    }
}

Struts.xml

<package name="default" extends="struts-default" namespace="/">
        <action name="download" class="cn.sxt.action.DownloadAction">
            <result type="stream">
                <!-- 根據inputName生產的get方法  到Action中去取得該方法的返回值 -->
                <param name="inputName">inputStream</param>
                <!-- 設置下載的文件 直接保存 -->
                <param name="contentDisposition">attachment;filename=${fileName}</param>
            </result>
        </action>
    </package>

jsp

<body>
        <a href="download/2.txt">課件</a> <br />
        <a href="download/1.jpg">美女</a> <br />
        <hr />
        <a href="download.action?fileName=2.txt">課件</a> <br />
        <a href="download.action?fileName=1.jpg">美女</a> <br />
  </body>

 

或者 Action的另一種寫法:

public class DownloadAction {
    private String fileName;
    private InputStream inputStream;
    public String execute() throws FileNotFoundException{
        String path=ServletActionContext.getServletContext().getRealPath("/download");
        inputStream =  new FileInputStream(new File(path,fileName));
        return Action.SUCCESS;
    }
    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }
    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM