refactor: formidable usage

Instead of a single image or an array formidable now always returns an array of files.

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares
2026-08-21 18:26:02 +02:00
committed by Philip Molares
parent f2b50dd290
commit 65b39de212

View File

@@ -1,12 +1,12 @@
'use strict' 'use strict'
import isSvg from 'is-svg' import isSvg from 'is-svg'
import formidable from 'formidable'
import { createRequire } from 'module' import { createRequire } from 'module'
const require = createRequire(import.meta.url) const require = createRequire(import.meta.url)
const Router = require('express').Router const Router = require('express').Router
const formidable = require('formidable')
const path = require('path') const path = require('path')
const fs = require('fs') const fs = require('fs')
const { v4: uuidv4 } = require('uuid') const { v4: uuidv4 } = require('uuid')
@@ -125,21 +125,22 @@ imageRouter.post('/uploadimage', function (req, res) {
} }
}) })
form.parse(req, async function (err, fields, files) { form.parse(req, async function (err, _fields, files) {
if (err) { if (err) {
logger.error(`Image upload error: formidable error: ${err}`) logger.error(`Image upload error: formidable error: ${err}`)
rimraf.sync(tmpDir) rimraf.sync(tmpDir)
return errors.errorForbidden(res) return errors.errorForbidden(res)
} else if (!files.image || !files.image.filepath) { } else if (!files.image || !files.image.length < 1 || !files.image[0].filepath) {
logger.debug(`${JSON.stringify(files)}`)
logger.error('Image upload error: Upload didn\'t contain file)') logger.error('Image upload error: Upload didn\'t contain file)')
rimraf.sync(tmpDir) rimraf.sync(tmpDir)
return errors.errorBadRequest(res) return errors.errorBadRequest(res)
} else if (!(await checkUploadType(files.image.filepath))) { } else if (!(await checkUploadType(files.image[0].filepath))) {
rimraf.sync(tmpDir) rimraf.sync(tmpDir)
return errors.errorBadRequest(res) return errors.errorBadRequest(res)
} else { } else {
const extension = path.extname(files.image.filepath).toLowerCase() const extension = path.extname(files.image[0].filepath).toLowerCase()
if (extension === '.svg' && !sanitizeSvg(files.image.filepath)) { if (extension === '.svg' && !sanitizeSvg(files.image[0].filepath)) {
logger.error('Image upload error: SVG sanitization failed') logger.error('Image upload error: SVG sanitization failed')
rimraf.sync(tmpDir) rimraf.sync(tmpDir)
return errors.errorBadRequest(res) return errors.errorBadRequest(res)
@@ -151,9 +152,9 @@ imageRouter.post('/uploadimage', function (req, res) {
const uploadProvider = require('./' + config.imageUploadType) const uploadProvider = require('./' + config.imageUploadType)
logger.debug( logger.debug(
`imageRouter: Uploading ${files.image.filepath} using ${config.imageUploadType}` `imageRouter: Uploading ${files.image[0].filepath} using ${config.imageUploadType}`
) )
uploadProvider.uploadImage(files.image.filepath, function (err, url) { uploadProvider.uploadImage(files.image[0].filepath, function (err, url) {
rimraf.sync(tmpDir) rimraf.sync(tmpDir)
if (err !== null) { if (err !== null) {
logger.error(err) logger.error(err)