// 文件名必须用 %xx 编码
const str = `attachment; filename-="download-file1%E4%B8%AD%E6%96%87.json"; filename*=UTF-8''download-file2%E4%B8%AD%E6%96%87.json`;
function guessFilename(contentDisposition)
{
if (! contentDisposition) {
return;
}
const pat = /(filename\*?)=([^;]+)/
const rs = pat.exec(contentDisposition);
if (rs?.[1] === 'filename*') {
const value_part = rs[2];
const pos = value_part.lastIndexOf("'");
return value_part.substring(pos + 1);
}
if (rs[1] === 'filename') {
let filename = rs[2];
if (filename.startsWith('"')){
filename = filename.substring(1);
}
if (filename.endsWith('"')) {
filename = filename.substring(0, filename.length - 1);
}
return filename
}
}
const filename = guessFilename(str);
console.log(filename);