From 700d1e84599fee0de63bfc43700fab57f7943dc5 Mon Sep 17 00:00:00 2001 From: Jack Mayo Date: Mon, 20 Apr 2026 17:52:53 +0100 Subject: [PATCH] fix for unhandled error on eacces --- server/controllers/MiscController.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/server/controllers/MiscController.js b/server/controllers/MiscController.js index 490cb27d..5b7e478d 100644 --- a/server/controllers/MiscController.js +++ b/server/controllers/MiscController.js @@ -78,22 +78,30 @@ class MiscController { const cleanedOutputDirectoryParts = outputDirectoryParts.filter(Boolean).map((part) => sanitizeFilename(part)) const outputDirectory = Path.join(...[folder.path, ...cleanedOutputDirectoryParts]) - await fs.ensureDir(outputDirectory) + try { + await fs.ensureDir(outputDirectory) + } catch (error) { + Logger.error(`[MiscController] Failed to create upload directory "${outputDirectory}"`, error) + return res.status(500).send(`Failed to create upload directory: ${error.message}`) + } Logger.info(`Uploading ${files.length} files to`, outputDirectory) + const failedFiles = [] for (const file of files) { const path = Path.join(outputDirectory, sanitizeFilename(file.name)) - await file - .mv(path) - .then(() => { - return true - }) - .catch((error) => { - Logger.error('Failed to move file', path, error) - return false - }) + await file.mv(path).catch((error) => { + Logger.error('Failed to move file', path, error) + failedFiles.push(`${file.name} (${error.message})`) + }) + } + + if (failedFiles.length === files.length) { + return res.status(500).send(`Failed to upload files: ${failedFiles.join(', ')}`) + } + if (failedFiles.length) { + return res.status(500).send(`Uploaded ${files.length - failedFiles.length} of ${files.length} files. Failed: ${failedFiles.join(', ')}`) } res.sendStatus(200)