import { NextRequest, NextResponse } from 'next/server' import { writeFile, mkdir } from 'fs/promises' import { join } from 'path' import { existsSync } from 'fs' export async function POST(request: NextRequest) { try { const data = await request.formData() const files: File[] = data.getAll('files') as File[] if (!files || files.length === 0) { return NextResponse.json({ error: 'No files uploaded' }, { status: 400 }) } const uploadedUrls: string[] = [] for (const file of files) { if (!file.type.startsWith('image/')) { return NextResponse.json({ error: 'Only image files are allowed' }, { status: 400 }) } const bytes = await file.arrayBuffer() const buffer = new Uint8Array(bytes) // Create products directory if it doesn't exist const productsDir = join(process.cwd(), 'public', 'products') if (!existsSync(productsDir)) { await mkdir(productsDir, { recursive: true }) } // Generate unique filename const timestamp = Date.now() const filename = `${timestamp}-${file.name.replace(/[^a-zA-Z0-9.-]/g, '_')}` const filepath = join(productsDir, filename) // Write file to public/products directory await writeFile(filepath, buffer) // Add to uploaded URLs (relative path for use in app) uploadedUrls.push(`/products/${filename}`) } return NextResponse.json({ success: true, urls: uploadedUrls, message: `${uploadedUrls.length} file(s) uploaded successfully` }) } catch (error) { console.error('Upload error:', error) return NextResponse.json( { error: 'Failed to upload files' }, { status: 500 } ) } }