import { NextResponse } from 'next/server'; import fs from 'fs'; import path from 'path'; export const dynamic = 'force-dynamic'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const name = searchParams.get('name'); if (!name) return new NextResponse('File name required', { status: 400 }); const filePath = path.join(process.cwd(), 'data', 'uploads', name); try { const fileBuffer = fs.readFileSync(filePath); // Determine basic mime types const ext = path.extname(name).toLowerCase(); let mimeType = 'image/jpeg'; if (ext === '.png') mimeType = 'image/png'; if (ext === '.gif') mimeType = 'image/gif'; if (ext === '.svg') mimeType = 'image/svg+xml'; if (ext === '.webp') mimeType = 'image/webp'; return new NextResponse(fileBuffer, { headers: { 'Content-Type': mimeType, 'Cache-Control': 'public, max-age=86400', // Cache in browser for 1 day }, }); } catch (error) { return new NextResponse('Image not found', { status: 404 }); } }