API Route (Next.js App Dir Route Handler)
Use the createS3Client
and generatePresignedUrls
functions to create an API route for handling pre-signed URLs:
app/api/s3upload.js
import { createS3Client, generatePresignedUrls } from "next-s3-uploader";
export async function POST(req) {
try {
const { keys } = await req.json();
// Configure S3 client
const s3Client = createS3Client({
provider: "aws",
region: "us-east-1",
credentials: {
accessKeyId: "YOUR_ACCESS_KEY_ID",
secretAccessKey: "YOUR_SECRET_ACCESS_KEY",
},
});
// Generate pre-signed URLs
const bucket = "your-bucket-name";
const prefix = `userId/images/`;
const urls = await generatePresignedUrls(s3Client, keys, bucket, prefix);
return new Response(JSON.stringify(urls), { status: 200 });
} catch (error) {
console.error("Error processing the request:", error);
return new Response("Internal Server Error", { status: 500 });
}
}