This commit is contained in:
@kirill.komarov
2026-05-10 17:15:56 +05:00
parent e67d8bdc0a
commit 517cd23a55
17 changed files with 151 additions and 37 deletions
+14 -3
View File
@@ -14,7 +14,7 @@ export function uploadError(message, statusCode = 400) {
return err
}
export async function persistMultipartImages(request, { maxFiles = 10 } = {}) {
export async function persistMultipartImages(request, { maxFiles = 10, maxFileBytes }) {
if (!request.isMultipart()) {
throw uploadError('Ожидается multipart/form-data')
}
@@ -23,9 +23,14 @@ export async function persistMultipartImages(request, { maxFiles = 10 } = {}) {
await fs.promises.mkdir(uploadsDir, { recursive: true })
const urls = []
const parts = request.parts()
const parts = request.parts({
limits: {
fileSize: maxFileBytes,
files: maxFiles,
},
})
for await (const part of parts) {
if (part.type !== 'file') continue
if (!part.file) continue
if (urls.length >= maxFiles) {
throw uploadError(`Можно загрузить не более ${maxFiles} файл(ов)`)
}
@@ -40,6 +45,12 @@ export async function persistMultipartImages(request, { maxFiles = 10 } = {}) {
urls.push(`/uploads/${fileName}`)
}
if (urls.length === 0) {
throw uploadError(
'Файлы не получены. Проверьте, что запрос multipart/form-data и поля — файлы изображений (png, jpg, webp).',
)
}
return urls
}