此处只介绍node下载如何设置下载文件的中文文件名
const fileName = fileName // 文件名
const userAgent = (req.headers['user-agent'] || '').toLowerCase();
const suffix = fileName.split('.').pop() //获取后缀名
res.setHeader('Content-Type', 'application/octet-stream;charset=UTF8'); // 设置头部让浏览器识别这是下载的文件
if (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('chrome') >= 0) { // chrome很简单这样写就行
res.setHeader("Content-Disposition", `attachment; filename=${encodeURIComponent(fileName)}.${suffix}`);
} else { // 问题是safari和其他一些奇葩浏览器
res.setHeader('Content-Disposition', `attachment; filename*=utf-8''${encodeURIComponent(fileName)}.${suffix}`);
}
注意:safari需要设置头部的是 filename*
这个*
不能少!以及 utf-8后面加的 ''
也不能少!不然设置的中文还是会乱码
设置完成safari以及一些奇葩浏览器设置的中文filename就正常了