sar / src /app /api /image /route.ts
Mafia2008's picture
fix: store presentation slides in /data persistent storage and embed base64 fallback in session state
559451d
Raw
History Blame Contribute Delete
1.1 kB
import { NextRequest, NextResponse } from 'next/server';
import fs from 'fs/promises';
import path from 'path';
export const runtime = 'nodejs';
export const dynamic = 'force-dynamic';
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
const sessionId = searchParams.get('sessionId');
const slideNumber = searchParams.get('slideNumber');
if (!sessionId || !slideNumber) {
return new NextResponse('Missing sessionId or slideNumber', { status: 400 });
}
const storageRoot = process.env.SPACE_ID ? '/data' : path.join(process.cwd(), 'data');
const fileName = `slide_${slideNumber}.png`;
const filePath = path.join(storageRoot, 'sessions', sessionId, fileName);
const imageBuffer = await fs.readFile(filePath);
return new NextResponse(imageBuffer, {
status: 200,
headers: {
'Content-Type': 'image/png',
'Cache-Control': 'public, max-age=31536000, immutable'
}
});
} catch (error) {
return new NextResponse('Image not found', { status: 404 });
}
}