Ext 实现文件下载(Servlet后台)

        在Ext中直接实现文件的下载是比较困难的,最后通过模拟Form表单的提交来实现文件的下载。

        1、首先是客户端:

<a href="javascript:void(0)" type="test" style="color:blue;text-decoration:underline">下载</a>

        这段代码是放入在一个Ext.XTemplate中的。

        2、捕捉上面链接里面的"click"事件,然后进行处理:

onClick : function(e){
	var href = e.getTarget('a', 4, true);
	if(href){
	       var type = href.dom.type;
	       if (!Ext.fly('frmDummy')){    
	                 var frm = document.createElement('form');    
		 frm.id = 'frmDummy';    
		 frm.name = id;    
		 frm.className = 'x-hidden';
		 frm.action = 'get.file?type=' + type;
		 frm.method = 'post';
		 frm.target = '_blank';
		 document.body.appendChild(frm);    
	        }
		Ext.fly('frmDummy').dom.submit();
               }
    }

  从上面的代码可以看出,其本质是通过代码的方式创建一个"form"表单,设置相关属性后再提交。

          3、Servlet中的代码为:

                File source = new File("文件的路径!");
                resp.reset();
	resp.setContentType("application/force-download");
	resp.setHeader("Content-Disposition", "attachment; filename=\""+ source.getName() + "\"");
	resp.setHeader("Pragma", "No-cache"); 
	resp.setHeader("Cache-Control", "no-cache"); 
	ServletOutputStream sos = resp.getOutputStream();
	BufferedInputStream fin = new BufferedInputStream(new FileInputStream(source));
	byte[] content = new byte[1024];
	int length;
	while ((length = fin.read(content, 0, content.length)) != -1)             {
                         sos.write(content, 0, length);
	}
	fin.close();
	sos.flush();
	sos.close();

 

这样就可以实现Ext客户端下载服务器上面的某个文件了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值