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