Files
O96u 6cc4f27f7d
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
release: v1.4.1 — 上传策略设置、保留原图与上传 tagNames
管理员可在设置页配置上传大小、格式、限流与保留原图;上传 API 支持按标签名称打标。
2026-09-16 10:03:05 +08:00

31 lines
886 B
TypeScript

import type { MultiPartData } from 'h3'
export function readMultipartFormFieldValues(
formData: MultiPartData[],
fieldName: string
): string[] {
const field = formData.find(part => part.name === fieldName)
if (field?.data?.length) {
const raw = new TextDecoder().decode(field.data).trim()
if (!raw) return []
try {
const parsed = JSON.parse(raw) as unknown
if (Array.isArray(parsed)) {
return parsed.map(item => String(item).trim()).filter(Boolean)
}
} catch {
// fall through to comma-separated parsing
}
return raw.split(',').map(item => item.trim()).filter(Boolean)
}
const repeatFields = formData.filter(
part => part.name === fieldName && part.data?.length
)
if (!repeatFields.length) return []
return repeatFields
.map(part => new TextDecoder().decode(part.data!).trim())
.filter(Boolean)
}