13 lines
545 B
TypeScript
13 lines
545 B
TypeScript
export function imageContentDisposition(displayName: string, fallbackName: string): string {
|
|
const safeDisplayName = displayName.trim() || fallbackName;
|
|
const fallback = safeDisplayName
|
|
.normalize("NFKD")
|
|
.replace(/[^a-z0-9]+/giu, "-")
|
|
.replace(/^-|-$/gu, "") || fallbackName;
|
|
const encoded = encodeURIComponent(`${safeDisplayName}.png`).replace(
|
|
/['()*]/gu,
|
|
(character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`,
|
|
);
|
|
return `attachment; filename="${fallback}.png"; filename*=UTF-8''${encoded}`;
|
|
}
|