中文文件下载方法(Java)

web开发中,如果浏览器上有一个超链接,点击它后,弹出的下载框中文件名是乱码或不显示的时候,往往是由于我们没有对中文文件名进行编码处理,所以,这里提供一个中文文件下载的方法,以供参考。

针对浏览器类型,对文件名字做编码处理 Firefox (Base64) , IE、Chrome(UTF-8)。。。

  • 如果文件的名字带有中文,那么需要对这个文件名进行编码处理
  • 如果是IE ,或者  Chrome (谷歌浏览器) ,使用URLEncoding 编码
  • 如果是Firefox , 使用Base64编码

代码如下:

public class DownLoadUtil {
    public static String base64EncodeFileName(String fileName) {
	BASE64Encoder base64Encoder = new BASE64Encoder();
	try {
		return "=?UTF-8?B?"
			+ new String(base64Encoder.encode(fileName
			.getBytes("UTF-8"))) + "?=";
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
		throw new RuntimeException(e);
	}
    }
}
// 获取来访的客户端类型
	String clientType = request.getHeader("User-Agent");
	
	if (clientType.contains("Firefox")) {
		fileName = DownLoadUtil.base64EncodeFileName(fileName);
	} else {
		//IE ,或者  Chrome (谷歌浏览器) ,
		//对中文的名字进行编码处理
		fileName = URLEncoder.encode(fileName,"UTF-8");
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值