From 8987aba77e71ca53f73eedae9b0c40b1f7d94c3e Mon Sep 17 00:00:00 2001 From: Harry Chen Date: Fri, 26 Jul 2024 15:59:26 +0800 Subject: [PATCH] fix: single field when allowFieldsDuplication enabled (#3981) --- packages/upload/src/parse.ts | 5 ++++- packages/upload/test/koa.test.ts | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/upload/src/parse.ts b/packages/upload/src/parse.ts index 716c0ba21afb..3ecb638e0e47 100644 --- a/packages/upload/src/parse.ts +++ b/packages/upload/src/parse.ts @@ -5,8 +5,11 @@ const headSeparator = Buffer.from('\r\n\r\n'); function saveFields(fields, key, value, allowFieldsDuplication) { if (allowFieldsDuplication) { if (!fields[key]) { - fields[key] = [value]; + fields[key] = value; } else { + if (!Array.isArray(fields[key])) { + fields[key] = [fields[key]]; + } fields[key].push(value); } } else { diff --git a/packages/upload/test/koa.test.ts b/packages/upload/test/koa.test.ts index aff58f6f2f61..5e781f98be11 100644 --- a/packages/upload/test/koa.test.ts +++ b/packages/upload/test/koa.test.ts @@ -232,12 +232,14 @@ describe('test/koa.test.ts', function () { await request.post('/upload') .field('name', 'form') .field('name', 'form2') + .field('nameOther', 'other') .attach('file', filePath) .expect(200) .then(async response => { assert(response.body.files.length === 1); assert(response.body.files[0].filename === 'test.pdf'); assert(JSON.stringify(response.body.fields.name) === JSON.stringify(['form', 'form2'])); + assert(response.body.fields.nameOther === 'other'); }); }); });