zoukankan      html  css  js  c++  java
  • struts2学习笔记之文件下载

    文件下载最重要的是设置响应头:


    1 contentType,指定文件的MIME类型,使浏览器获知。如doc文件可以如下设置:application/msword
    2 contentDisposition,告知文件名称如:attachment;filename="download.jpg"

       其中attachment非常重要,它将指示浏览器文件将作为附件形式下载;

        如果没有这一项,浏览器将自己根据contentType进行判断处理:比如text/plain、 text/html 、image/jpg 之类的将被直接显示在浏览器窗口中而不是执行正常的下载。

    struts2中实现文件下载非常方便,以下是例子:


    Action的实现:

    public class DownloadAction extends ActionSupport{
           private String file;   //请求下载的file名称
           public void setFile(String file){
    		this.file = file;
    	}
    	public String execute(){
                    //不一定直接返回SUCCESS,可以根据需要进行一些权限验证之类的操作
    		return SUCCESS;
    	}
    	
            //使用该get形式的方法返回一个InputStream,在struts.xml中对应配置上targetFile属性
    	public InputStream getTargetFile()throws Exception{
    		System.out.println(this.file);
    		InputStream is = ServletActionContext.getServletContext().getResourceAsStream(this.file);
    		System.out.println(is);
    		return is;
    	}
    }


    struts.xml的配置:

    <action name="download" class="upload.DownloadAction">
              <!--stream类型 -->
    	  <result name="success" type="stream"> 
               <!-- 配置对应的inputstream获取属性-->
    	   <param name="inputName">targetFile</param>    
               <!-- 配置contentType -->
    	   <param name="contentType">image/jpg</param>
               <!-- 配置contentDisposition,其中attachment很重要-->
    	   <param name="contentDisposition">attachment;filename="download.jpg"</param>
               <!-- 写出文件的缓冲大小 -->
    	   <param name="bufferSize">4096</param>
    	  </result>
    </action>

    下载页面示例:

    <form action="download.action" method="post">
        图片文件路径:<input type="text" name="file" value="/images/flowers.jpg" /><br/>
       <input type="submit" value=“下载"/>
    </form>




  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/littleatp/p/4354501.html
Copyright © 2011-2022 走看看