import { NextResponse } from 'next/server' import { S3Client, PutObjectCommand, DeleteObjectCommand } from '@aws-sdk/client-s3' const Bucket = process.env.AMPLIFY_BUCKET const s3 = new S3Client({ region: process.env.AWS_REGION, credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, }, }) const uploadImage = async (file) => { const Body = Buffer.from(await file.arrayBuffer()) const Key = `cads/${file.name}` const ContentType = file.ContentType await s3.send( new PutObjectCommand({ Bucket, Key, Body, ContentType, }), ) return { filePath: `https://${process.env.AMPLIFY_BUCKET}.s3.${process.env.AWS_REGION}.amazonaws.com/${Key}`, fileName: Key, } } export async function POST(req) { try { const formData = await req.formData() const file = formData.get('file') const result = await uploadImage(file) return NextResponse.json(result) } catch (error) { console.error(error) return NextResponse.json({ error: 'Failed to upload image' }, { status: 500 }) } } export async function DELETE(req) { try { const searchParams = req.nextUrl.searchParams const Key = `cads/${searchParams.get('fileName')}` console.log('🚀 ~ DELETE ~ Key:', Key) if (!Key) { return NextResponse.json({ error: 'fileName parameter is required' }, { status: 400 }) } await s3.send( new DeleteObjectCommand({ Bucket, Key, }), ) return NextResponse.json({ message: '이미지 삭제 성공' }, { status: 200 }) } catch (error) { console.error('S3 Delete Error:', error) return NextResponse.json({ error: 'Failed to delete image' }, { status: 500 }) } }