JavaWeb开发中,文件下载的时候,ie和firefox文件名的处理

在web开发中,文件下载的时候,如果文件名称出现中文和空格,这个时候,就会出现问题。

1、中文乱码

2、空格

       a)IE下变为+

       b)Firefox下回截断文件名


针对这两个问题,相应的解决方案;


1、首先判断浏览器类型:

更加http请求头中的“USER-AGENT”来判断

// 简单判断ie
public static boolean isIE(){  
    return  request.getHeader( "USER-AGENT" ).toLowerCase().indexOf( "msie" ) >  0  ?  true  :  false ;  
}

// 详细的可以参考
// *****根据 User Agent String 判断客户端平台及浏览器的 Java 程序*****
// http://blog.csdn.net/defonds/article/details/8128165


2、文件名的处理
       ie空格的处理:空格 --》 “+”
       firefox空格的处理:空格节点文件名

代码如下:

public void downLoadFile(InputStream ins, String fileName){
    //1.判断ie
    boolean isMSIE = isMSIE();
    //2.文件名处理
    if (isMSIE){// IE
        fileName = URLEncoder.encode(fileName, "utf-8");
        fileName = fileName.replace("+", "%20");// 处理空格变“+”的问题
    } else {// FF
        fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");
    }
    //3.准备响应头
    //这里filename用“"”英文的双引号扣起来,可以防止firefox空格节点文件名的问题
    response.setHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");
    response.setContentType("application/octet-stream");
    //4.下载,注意IO异常的处理
    os = response.getOutputStream();
    byte [] cache = new btye[1024];
    int length = ins.read(cache);
    while (length != -1){
        os.wirt(cache,0,length);
        length = ins.read(cache);
    }
}


关键是:
1、ie下replace
2、firefox下,filename要用双引号括起来





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值