'use server'; import { writeFile, mkdir } from 'fs/promises'; import { join } from 'path'; export async function uploadImage(formData: FormData) { try { const file = formData.get('file') as File; if (!file) { return { success: false, error: 'Aucun fichier fourni' }; } const bytes = await file.arrayBuffer(); const buffer = Buffer.from(bytes); // Create a unique filename const fileExtension = file.name.split('.').pop(); const fileName = `${Date.now()}-${Math.random().toString(36).substring(2, 9)}.${fileExtension}`; // Path for the ROOT public/uploads (where the main site will look) const rootPublicDir = join(process.cwd(), '..', 'public', 'uploads'); // Path for the ADMIN public/uploads (where the admin app can see it for preview) const adminPublicDir = join(process.cwd(), 'public', 'uploads'); // Ensure both directories exist await mkdir(rootPublicDir, { recursive: true }); await mkdir(adminPublicDir, { recursive: true }); // Save to both await writeFile(join(rootPublicDir, fileName), buffer); await writeFile(join(adminPublicDir, fileName), buffer); // Return the relative URL return { success: true, url: `/uploads/${fileName}` }; } catch (error) { console.error('Error during image upload:', error); return { success: false, error: 'Erreur lors de l\'upload de l\'image' }; } }