Skip to content
This repository was archived by the owner on May 2, 2025. It is now read-only.

Commit 5e0fb0e

Browse files
committed
fix(utils): allow for Unicode characters in Content-Disposition
1 parent 46ee587 commit 5e0fb0e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

spec/utils.spec.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,15 @@ describe("utils tests", () => {
8989
describe("setContentDispositionHeader tests", () => {
9090
it("sets Content-Disposition header with specified value", () => {
9191
const fileName = "file.txt";
92-
const value = `attachment; filename="${fileName}"`;
92+
const value = `attachment; filename*=utf-8''${fileName}`;
9393
setContentDispositionHeader(fileName, res);
94-
expect((res.setHeader as SinonStub).calledOnceWith("Content-Disposition", value));
94+
expect((res.setHeader as SinonStub).calledOnceWith("Content-Disposition", value)).to.be.true;
95+
});
96+
it("sets Content-Disposition header with specified unicode", () => {
97+
const fileName = "file.txt";
98+
const value = `attachment; filename*=utf-8''${encodeURIComponent(fileName)}`;
99+
setContentDispositionHeader(fileName, res);
100+
expect((res.setHeader as SinonStub).calledOnceWith("Content-Disposition", value)).to.be.true;
95101
});
96102
});
97103
describe("setCacheControlHeaderNoCache tests", () => {

src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ export const setAcceptRangesHeader = setHeader.bind(null, "Accept-Ranges", "byte
99
export const setContentRangeHeader = (range: Range | null, size: number, res: Response) =>
1010
setHeader("Content-Range", `bytes ${range ? `${range.start}-${range.end}` : "*"}/${size}`, res);
1111
export const setContentDispositionHeader = (fileName: string, res: Response) =>
12-
setHeader("Content-Disposition", `attachment; filename="${fileName}"`, res);
12+
setHeader("Content-Disposition", `attachment; filename*=utf-8''${encodeURIComponent(fileName)}`, res);
1313
export const setCacheControlHeaderNoCache = setHeader.bind(null, "Cache-Control", "no-cache");

0 commit comments

Comments
 (0)