Merge pull request #2169 from imliuruiqi/fix/multipart-formdata-encode

fix(multipart): improve encode logic for multipart/form-data
This commit is contained in:
AguynamedRich
2025-08-08 13:29:11 +08:00
committed by GitHub
parent 3d083a268a
commit 86c973d06e
2 changed files with 35 additions and 6 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'fumadocs-openapi': minor
---
fix(multipart): improve encode logic for multipart/form-data
+30 -6
View File
@@ -134,19 +134,43 @@ export const defaultAdapters = {
for (const key in body) {
const prop = body[key];
if (typeof prop === 'object' && prop instanceof File) {
formData.set(key, prop);
}
if (prop === null || prop === undefined || Number.isNaN(prop)) continue;
if (Array.isArray(prop) && prop.every((item) => item instanceof File)) {
// Arrays (multi-value field)
if (Array.isArray(prop)) {
for (const item of prop) {
formData.append(key, item);
if (item === null || item === undefined) continue;
if (item instanceof File) {
formData.append(key, item, item.name);
} else if (item instanceof Blob) {
formData.append(key, item, 'blob');
} else if (typeof item === 'object') {
formData.append(key, JSON.stringify(item));
} else {
formData.append(key, String(item));
}
}
}
if (prop && !(prop instanceof File)) {
// Single File
else if (prop instanceof File) {
formData.set(key, prop, prop.name);
}
// Single Blob
else if (prop instanceof Blob) {
formData.set(key, prop, 'blob');
}
// Any other object (stringify)
else if (typeof prop === 'object') {
formData.set(key, JSON.stringify(prop));
}
// Primitive types
else {
formData.set(key, String(prop));
}
}
return formData;