From 7f8bf5e3a9535a4fa3117b90be89dbdc7d7533dd Mon Sep 17 00:00:00 2001 From: Frederico Castro Date: Sat, 28 Feb 2026 05:58:06 -0300 Subject: [PATCH] Corrigir limite de upload e error handling no import de projetos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aumenta fileSize do multer para 500MB e adiciona tratamento de erro do multer que retorna 413 com mensagem clara ao invés de crash. --- src/routes/api.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/routes/api.js b/src/routes/api.js index fadf94b..d7e1c48 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -41,7 +41,7 @@ const upload = multer({ const importUpload = multer({ storage: multer.memoryStorage(), - limits: { fileSize: 50 * 1024 * 1024, files: 10000 }, + limits: { fileSize: 500 * 1024 * 1024, files: 50000 }, }); const router = Router(); @@ -1461,7 +1461,12 @@ router.post('/projects/import', async (req, res) => { } }); -router.post('/projects/upload', importUpload.array('files', 10000), async (req, res) => { +router.post('/projects/upload', (req, res, next) => { + importUpload.array('files', 50000)(req, res, (err) => { + if (err) return res.status(413).json({ error: `Upload falhou: ${err.message}` }); + next(); + }); +}, async (req, res) => { const repoName = (req.body.repoName || '').toLowerCase().replace(/[^a-z0-9-]/g, '-'); if (!repoName) return res.status(400).json({ error: 'repoName é obrigatório' }); @@ -1497,8 +1502,7 @@ router.post('/projects/upload', importUpload.array('files', 10000), async (req, if (!relativePath || relativePath.includes('..')) continue; const dest = join(tmpDir, relativePath); mkdirSync(dirname(dest), { recursive: true }); - const { writeFileSync: wfs } = await import('fs'); - wfs(dest, files[i].buffer); + writeFileSync(dest, files[i].buffer); } steps.push(`${files.length} arquivos recebidos`);