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

         

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

        

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

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

     

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

      Struts2学习笔记(七)之文件的下载_第1张图片 

              

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

  • contentType:指定这个输入流的类型
  • contentLength:指定输入流的长度
  • contentDisposition :指定下载的文件名字,其中下载的时候,默认为inline,此时浏览器判断时候可以直接打开,     如果不可以,会用下载器去下载下来.attachment;filename="xxxx.xx". 
  • inputName:指定被下载文件的入口的输入流
  • bufferSieze:下载的时候的缓冲区的大小
  • allowCaching:是否允许支持缓存
  • contentCharSet:下载的文件的内容的编码格式
      上面的那些参数的的意思,是我自己看文档的一个小理解吧,可能理解的不太准确(初学这些东西),看到了错误希望大家提出来,我再去好好修改一下。
        
       看下文档中给出的对于上述参数的配置的例子:
       Struts2学习笔记(七)之文件的下载_第2张图片
           
     (二)下面直接看个文件下载的小例子
    
         ①:处理文件下载的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,Stream,String,浏览器,action)