import { BUCKET_NAME, s3 } from '@/aws/s3/S3Instance'
import { PutObjectCommand, ListObjectsCommand } from '@aws-sdk/client-s3'
import { NextRequest, NextResponse } from 'next/server'
export async function GET() {
const response = await s3.send(new ListObjectsCommand({ Bucket: BUCKET_NAME }))
return NextResponse.json(response?.Contents ?? [])
}
export const POST = async (req: NextRequest) => {
const formData = await req.formData()
const files = formData.getAll('file') as File[]
const response = await Promise.all(
files.map(async file => {
const Body = (await file.arrayBuffer()) as Buffer
s3.send(new PutObjectCommand({ Bucket: BUCKET_NAME, Key: file.name, Body }))
}),
)
return NextResponse.json(response)
import { getSignedUrl } from '@aws-sdk/s3-request-presigner'
import { GetObjectCommand } from '@aws-sdk/client-s3'
import { NextResponse } from 'next/server'
import { BUCKET_NAME, s3 } from '@/aws/s3/S3Instance'
export async function GET(_: Request, { params }: { params: { key: string } }) {
const command = new GetObjectCommand({ Bucket: BUCKET_NAME, Key: params.key })
const src = await getSignedUrl(s3, command, { expiresIn: 3600 })
return NextResponse.json({ src })
}
import { S3Client } from '@aws-sdk/client-s3'
const BUCKET_NAME = process.env.AWS_BUCKET_NAME
const s3 = new S3Client({
region: process.env.AWS_S3_BUCKET_REGION,
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID as string,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY as string,
},
})
export { s3, BUCKET_NAME }