mirror of
https://github.com/hanzo-docs/docs.git
synced 2026-10-25 04:20:02 +00:00
Merge pull request #2169 from imliuruiqi/fix/multipart-formdata-encode
fix(multipart): improve encode logic for multipart/form-data
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'fumadocs-openapi': minor
|
||||
---
|
||||
|
||||
fix(multipart): improve encode logic for multipart/form-data
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user