|
- 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 });
- }
- }
|