struts2文件下载的参数

       以前希望考研,对所用到的东西都是浅尝辄止。现在突然觉得考研的决定是自己失去了好多好多,人就应该面对现实,面对责任,而不是追求梦想而脱离实际。废话不多说了,让我分享一下struts2下载时候参数的配置。

 

1。annotation实现

 

@Results( { @Result(name = "success", type = "stream", params = {
				"contentType", "application/octet-stream;charset=ISO8859-1",
				"inputName", "inputStream", 
				"contentDisposition","attachment;filename=\"${fileName}\"", 
				"bufferSize", "4096" 
			})
		})

 2。xml配置

 

 

<action name="download" class="com.lizw.FileDownloadAction">  
            <result name="success" type="stream">  
                <param name="inputName">inputStream</param>  
                <param name="contentType">application/octet-stream</param>  
                <param name="contentDisposition">filename=${fileName}</param>  
                <param name="bufferSize">2048</param>  
            </result>  
        </action>  

 下面针对各个参数详细解释一下:

 

 

contentType :
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片 
 
inputName :
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法 
 
contentDisposition :
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值 为:
attachment;filename="readme.txt",表示文件下载的时候保存的名字应为 readme .txt。如果直接写filename=" readme .txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename=" readme .txt" 
 
bufferSize :
下载缓冲区的大小

 

 

 

对struts2下载流的理解:

   action中定义一个返回InputStream的方法,该方法作为被下载文件的入口,且需要配置stream类型结果时指定inputName参数,inputName参数的值就是方法去掉get前缀、首字母小写的字符串。

 

 

 

对应的核心Java代码:

 

	// 如果下载文件名为中文,进行字符编码转换
	public String getDownloadFileName() {
		String downloadFileName = fileName;

		try {
			downloadFileName = new String(downloadFileName.getBytes(),
					"ISO8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

		return downloadFileName;
	}

	public InputStream getInputStream() throws Exception {
		/**
		 * 下载用的Action应该返回一个InputStream实例, 该方法对应在result里的inputName属性值为targetFile
		 */
		return ServletActionContext.getServletContext().getResourceAsStream(
				STORAGEPATH);
	}

	public String execute() throws Exception {
		return SUCCESS;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值