Express 快速服务器文件下载,文件名中带逗号(“,”)
我有一个可以下载文件的express服务器。控制器如下所示:Express 快速服务器文件下载,文件名中带逗号(“,”),express,encoding,Express,Encoding,我有一个可以下载文件的express服务器。控制器如下所示: export const downloadFile = async (req, res, next) => { // ... get path and filename from req const fileStream = fs.createReadStream(path); const filenameUriEncoded = encodeURI(filename); res.setHeader('Co
export const downloadFile = async (req, res, next) => {
// ... get path and filename from req
const fileStream = fs.createReadStream(path);
const filenameUriEncoded = encodeURI(filename);
res.setHeader('Content-disposition', `attachment; filename*=UTF-8''${filenameUriEncoded}; filename=${filenameUriEncoded}`);
res.setHeader('Content-type', 'application/pdf');
res.setHeader('Content-length', size);
fileStream.pipe(res);
}
这很好用,但是当文件名
包含逗号(“,”)时,Chrome无法下载文件(显示错误),而其他浏览器(FireFox和Safari)下载效果良好
例如,文件名Colors-blue,green.pdf
编码为Colors%20-%20blue,%20green.pdf
,因此逗号根本不编码
我的问题是:
- 为什么Chrome不能处理这个问题,而其他浏览器可以
- 还有其他角色会导致类似的问题吗
encodeURIComponent
const filenameUriEncoded = encodeURI(filename);
据Chromes称,无法下载带有逗号的文件是一个众所周知的问题