18 lines
516 B
TypeScript
18 lines
516 B
TypeScript
export function getFilenameFromContentDisposition(disposition: string | null): string | null {
|
|
if (!disposition) return null;
|
|
|
|
const filenameStar = disposition.match(/filename\*\s*=\s*UTF-8''([^;]+)/i);
|
|
if (filenameStar?.[1]) {
|
|
try {
|
|
return decodeURIComponent(filenameStar[1]);
|
|
} catch {
|
|
// ignore
|
|
}
|
|
}
|
|
|
|
const filename = disposition.match(/filename\s*=\s*"([^"]+)"/i) || disposition.match(/filename\s*=\s*([^;]+)/i);
|
|
if (filename?.[1]) return filename[1].trim();
|
|
|
|
return null;
|
|
}
|