文件下载工具 java,天易42----java实现文件下载工具类

一:java代码片段

/**

*

* 文件下载

*

* @param request

* @param response

* @param filePath 文件路径

* @throws Exception 下载过程中出现异常

*/

public static boolean fileDownLoad(HttpServletRequest request,

HttpServletResponse response, String filePath) throws Exception {

boolean bl=false;

if (response != null && request != null && filePath != null

&& !filePath.equals("")) {

String browserType=request.getParameter("browserType");

final String userAgent = request.getHeader("USER-AGENT");

logger.info("userAgent==:"+userAgent);

// filePath是指欲下载的文件的路径。

filePath = URLDecoder.decode(filePath,"UTF-8");

File file = new File(filePath);

if(!file.exists()){

logger.info("############ FilePath: "+filePath);

throw new Exception("文件不存在!");

}

if(!file.isFile()){

logger.info("############ FilePath: "+filePath);

throw new Exception("非文件类型!");

}

// 取得文件名。

String fileName = file.getName();

if ("IE".equals(browserType)) {// IE浏览器,页面传过来的值,只用于判断是否为IE浏览器

logger.info("ie浏览器");

fileName = URLEncoder.encode(fileName, "UTF8");

} else {

if (userAgent.contains("Mozilla")) {// google,火狐浏览器

fileName = new String(fileName.getBytes(), "ISO8859-1");

logger.info("火狐浏览器");

} else {

logger.info("其他浏览器");

fileName = URLEncoder.encode(fileName, "UTF8");// 其他浏览器

}

}

// 提示框设置

response.reset(); // reset the response

// response.setCharacterEncoding("UTF-8");

response.setContentType("application/octet-stream");//告诉浏览器输出内容为流

response.setHeader("content-disposition", "attachment; filename=\""

+ fileName + "\"");

//读出文件到i/o流

FileInputStream fis=new FileInputStream(file);

BufferedInputStream buff=new BufferedInputStream(fis);

byte [] ary_byte=new byte[1024];//缓存

long k=0;//该值用于计算当前实际下载了多少字节

// 输出流

OutputStream out = response.getOutputStream();

//开始循环下载

while(k

int j=buff.read(ary_byte,0,1024);

k+=j;

//将b中的数据写到客户端的内存

out.write(ary_byte,0,j);

}

// 关闭输出流

if (out != null) {

out.flush();

out.close();

fis.close();

buff.close();

}

bl=true;

logger.info("文件下载完毕!");

} else {

new NullPointerException(

"HttpServletRequest Or HttpServletResponse Or fileName Is Null !");

}

return bl;

}

二:页面判断是否为IE浏览器代码

/点击下载

function assessDataOnload(){

var browser="";

if (window.navigator.userAgent.indexOf("MSIE") >= 1) {

browser="IE";

}

if($("[name='choose']:checked").length){

if(confirm("确定要下载已选中的数据吗?")){

var str = "";

$("[name='choose']:checked").each(function(){

str+=$(this).data("id")+",";

});

window.open("../assessDownLoad/downLoadData.do?browserType="+browser+"&id="+str,"_blank");

}

}else{

alert("请选择要下载的数据!");

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值