Struts2学习笔记(七)之文件的下载

         

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

        

          (一):首先要学习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的配置文件:
      
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>      <!--设置常量的标签 -->     <constant name="struts.multipart.maxSize" value="104857600000000"></constant>      	<package name="struts2" extends="struts-default"> 		<action name="fileupLoadAction" class="com.jiangqq.action.FileUpLoadAction"> 			<result name="success">/fileuploadResult.jsp</result> 		</action> 		 		<action name="downloadFile"  class="com.jiangqq.action.DownLoadAction1"> 	<!-- 指定是流 --> 		     <result name="success" type="stream"> 	<!-- attachment告诉浏览器,点击下载的时候强行使用下载器进行下载,默认为inline:这是看浏览器能不能打开,不能打开使用下载器 --> 	<!-- 后面那个filename是进行下载的那个文件显示的名字 -->     		        <param name="contentDisposition">attchament;filename=${filename}</param> 	<!--在Action中中getDownloadFile返回一个InputStream的输入流,这个输入流是文件下载的入口, 	      这对应param的name得值为downloadFile  -->		    		        <param name="inputName">downloadFile</param> 		     </result> 		</action> 		   	</package> </struts> 
                          
             ③:另外的显示下载文件信息的jsp文件就不贴了,具体可以去点击下面的代码的下载链接 
           
            以上就是关于文件下载的一个简要介绍了,继续对此的深入学习.
            学习笔记有些地方如果总结的不合理有错误,希望大家能够给我留言提出来,我会尽快改过来的.谢谢.
            有兴趣大家一起交流哦

            代码下载链接地址:http://download.csdn.net/detail/jiangqq781931404/4197805
  

             



你可能感兴趣的:(exception,struts,String,Stream,浏览器,action)