From 78aec63c2823e45f28cb84c66baacff2ab299483 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <32807958+zhiyuanzmj@users.noreply.github.com> Date: Tue, 25 Jul 2023 03:18:32 +0800 Subject: [PATCH] fix(readMultipartFormData): handle utf8 encoding for `name` and `filename` (#416) --- src/utils/internal/multipart.ts | 3 ++- test/body.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/internal/multipart.ts b/src/utils/internal/multipart.ts index cb483235..fc3d5670 100644 --- a/src/utils/internal/multipart.ts +++ b/src/utils/internal/multipart.ts @@ -134,7 +134,8 @@ function process(data: number[], headers: [string, string][]): MultiPartData { } const key = (s[0] || "").trim(); if (key === "name" || key === "filename") { - dataObj[key] = (s[1] || "").trim().replace(/"/g, ""); + const _value = (s[1] || "").trim().replace(/"/g, ""); + dataObj[key] = Buffer.from(_value, "latin1").toString("utf8"); } } diff --git a/test/body.test.ts b/test/body.test.ts index 98696af6..68fa02e2 100644 --- a/test/body.test.ts +++ b/test/body.test.ts @@ -249,7 +249,7 @@ describe("", () => { "multipart/form-data; boundary=---------------------------12537827810750053901680552518" ) .send( - '-----------------------------12537827810750053901680552518\r\nContent-Disposition: form-data; name="baz"\r\n\r\nother\r\n-----------------------------12537827810750053901680552518\r\nContent-Disposition: form-data; name="bar"\r\n\r\nsomething\r\n-----------------------------12537827810750053901680552518--\r\n' + '-----------------------------12537827810750053901680552518\r\nContent-Disposition: form-data; name="baz"\r\n\r\nother\r\n-----------------------------12537827810750053901680552518\r\nContent-Disposition: form-data; name="号楼电表数据模版.xlsx"\r\n\r\nsomething\r\n-----------------------------12537827810750053901680552518--\r\n' ); expect(result.body).toMatchInlineSnapshot(` @@ -260,7 +260,7 @@ describe("", () => { }, { "data": "something", - "name": "bar", + "name": "号楼电表数据模版.xlsx", }, ] `);