From 9c1413744d23e3788bc09dff34fb062e508e95cf Mon Sep 17 00:00:00 2001 From: AyoubBenziza Date: Wed, 10 Jun 2026 23:43:47 +0200 Subject: [PATCH] fix(admin): ensure uploads dir exists before writing (resilient upload) The upload route only relied on the startup mkdir; if the dir is removed while the server runs, writes failed with ENOENT. Now mkdir -p before each write. Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/server/src/admin/routes.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/server/src/admin/routes.ts b/apps/server/src/admin/routes.ts index 92c19ca..19cc1b8 100644 --- a/apps/server/src/admin/routes.ts +++ b/apps/server/src/admin/routes.ts @@ -2,7 +2,7 @@ // CRUD des questions manuelles écrites en base (source 'manual'). import { randomUUID } from "node:crypto" -import { writeFile } from "node:fs/promises" +import { mkdir, writeFile } from "node:fs/promises" import { extname, resolve } from "node:path" import type { FastifyInstance } from "fastify" import { desc, eq } from "drizzle-orm" @@ -109,6 +109,8 @@ export async function adminRoutes(app: FastifyInstance) { const safeExt = IMAGE_EXT.includes(ext) ? ext : ".jpg" const name = `${randomUUID()}${safeExt}` const buffer = await file.toBuffer() + // Crée le dossier si besoin (résilient s'il a été supprimé après le démarrage). + await mkdir(resolve(env.uploadsDir), { recursive: true }) await writeFile(resolve(env.uploadsDir, name), buffer) return { url: `/uploads/${name}` } })