登录
注册
node.js 学习社区
nodejs 下载文件 firefox浏览器中文名乱码的解决方法

金正日

2015-12-03 17:09

在做一个从服务器下载文件的功能,发现中文名子的文件,在从firefox下载时,文件名乱码。找了一些资料,因为外国人不需要这个,所以只能百度找,百度很乱的说,尝试了好几种别人总结的东西,终于成功了一种,分享出来。

测试通过,IE,chrome,safari ,firefox 都通过,其实就只是火狐自己特殊,其他浏览器的下载都正常读出中文名。

下面代码是在express4.X框架下的代码,其他语言或者框架,略加修改即可。

var name='中文名字';

var filepath='./docs/中文名字.docx';

if(req.get("User-Agent").toLowerCase().indexOf("firefox") > -1){
    var filename="=?UTF-8?B?"+new Buffer(name).toString('base64')+"?=";
}else{
    var filename=encodeURIComponent(name);
}

res.writeHead (200, {"Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8", "Pragma":"no-cache", "Expires":0, "Content-disposition": "attachment; filename="+filename+".docx"});
res.sendfile(filepath);

回复 · 0

发表回复

你可以在回复中 @ 其他人