Java Web文件下载

        工作中,一同事做下载功能时,在Chrome浏览器下不能正常,最后发现是需要对下载文件名做处理,特记录,源代码如下:

response.reset();
response.setContentType("application/octet-stream");
String filename = "";
if(httpRequest.getHeader("User-Agent").toUpperCase().indexOf("MEIE") > 0){
	filename = URLEncoder.encode(file_name, "UTF-8");
}else{
	filename = new String(file_name.getBytes("UTF-8"),"ISO8859-1");
}
//1:下载;2:预览
if("2".equals(file_type)) {
	response.setHeader("Content-Disposition", "inline;filename=" + filename);
}else {
	response.setHeader("Content-Disposition", "attachment;filename=" + filename);
}

        其中,request.getHeader("User-Agent")用来判断浏览器类型。

附:在获取前台传送过来的中文时,往往会出现乱乱码,针对不同的浏览器,需做特殊处理

String fileName = request.getParameter("fileName");
// 解决中文文件名乱码问题
if (request.getHeader("User-Agent").toLowerCase()
		.indexOf("firefox") > 0) {
		fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
} else if (request.getHeader("User-Agent").toUpperCase()
		.indexOf("MSIE") > 0) {
	fname = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
}else if (request.getHeader("User-Agent").toUpperCase()
		.indexOf("CHROME") > 0) {
	fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
}

猜你喜欢

转载自bijian1013.iteye.com/blog/2354838