我有一个可以下载文件的快递服务器。控制器如下所示:
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);
}
这很好用,但是当filename
包含逗号(“,”)时,Chrome无法下载文件(显示错误),而其他浏览器(FireFox和Safari)下载得很好。
例如,文件名Colors - blue, green.pdf
编码为Colors%20-%20blue,%20green.pdf
,因此逗号根本没有编码。
我的问题:
答案 0 :(得分:0)
如果您也想对逗号进行编码,则需要使用encodeURIComponent
。
const filenameUriEncoded = encodeURI(filename);
根据Chrome浏览器无法下载逗号分隔的文件-this是一个已知问题。