上一篇学习了文件的上传(点击链接进入:),今天花了点时间学习了一下文件的下载.

        

          (一):首先要学习Stream类,因为Struts2提供了stream的结果类型(可以在struts.xml的result的type属性进行配置),这个结果类型就是专门用来支持文件下载功能的,指定这个stream的时候,同时附带需要在param中指定一些参数:

           例如:inputStream这个参数,这个是指定了一个输入流,这就是文件下载的一个入口.

     

                让我们一起来看下Stream这个类:

       

              

           当我们配置了stream的时候,需要指定一些参数(但只要指定一些必须的例如:inputName,contentDisposition )

  • contentType:指定这个输入流的类型
  • contentLength:指定输入流的长度
  • contentDisposition :指定下载的文件名字,其中下载的时候,默认为inline,此时浏览器判断时候可以直接打开,     如果不可以,会用下载器去下载下来.attachment;filename="xxxx.xx". 
  • inputName:指定被下载文件的入口的输入流
  • bufferSieze:下载的时候的缓冲区的大小
  • allowCaching:是否允许支持缓存
  • contentCharSet:下载的文件的内容的编码格式
      上面的那些参数的的意思,是我自己看文档的一个小理解吧,可能理解的不太准确(初学这些东西),看到了错误希望大家提出来,我再去好好修改一下。
        
       看下文档中给出的对于上述参数的配置的例子:
       
           
     (二)下面直接看个文件下载的小例子
    
         ①:处理文件下载的Action类:
        
package com.jiangqq.action; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; //进行文件下载处理的Action类 public class DownLoadAction1 extends ActionSupport { 	private String filename; 	public String getFilename() { 		return filename; 	} 	public void setFilename(String filename) { 		this.filename = filename; 	} 	//把要进行下载的文件以流的形式返回 	//这个方法命名有点规则,可以进行getXXXXX(),但是后面的XXXX会在struts.xml中会用到,稍后会讲到 	public InputStream getDownloadFile() { 		return ServletActionContext.getServletContext().getResourceAsStream( 				"/upload/TestSyncListView.rar"); 	} 	@Override 	public String execute() throws Exception { 		return SUCCESS; 	} }
          ②:struts.xml的配置文件:
      
/fileuploadResult.jsp
attchament;filename=${filename}
downloadFile
                          
             ③:另外的显示下载文件信息的jsp文件就不贴了,具体可以去点击下面的代码的下载链接 
           
            以上就是关于文件下载的一个简要介绍了,继续对此的深入学习.
            学习笔记有些地方如果总结的不合理有错误,希望大家能够给我留言提出来,我会尽快改过来的.谢谢.
            有兴趣大家一起交流哦
            代码下载链接地址: