aws s3 uploader
This commit is contained in:
parent
07f3a65c40
commit
866cf3c559
|
@ -32,6 +32,8 @@
|
|||
"vercel-build": "astro build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.216.0",
|
||||
"@aws-sdk/s3-presigned-post": "^3.216.0",
|
||||
"mailgun.js": "^8.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
29
src/pages/api/upload.ts
Normal file
29
src/pages/api/upload.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
// pages/api/upload.ts
|
||||
|
||||
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'
|
||||
import { createPresignedPost } from '@aws-sdk/s3-presigned-post'
|
||||
|
||||
export default async function handler(req, res) {
|
||||
const s3Client = new S3Client({
|
||||
region: process.env.S3_REGION,
|
||||
credentials: {
|
||||
accessKeyId: process.env.S3_ACCESS_KEY,
|
||||
secretAccessKey: process.env.S3_SECRET_KEY
|
||||
}
|
||||
})
|
||||
|
||||
const post = await createPresignedPost(s3Client, {
|
||||
Bucket: process.env.S3_BUCKET_NAME,
|
||||
Key: req.query.file,
|
||||
Fields: {
|
||||
acl: 'public-read',
|
||||
'Content-Type': req.query.fileType
|
||||
},
|
||||
Expires: 600, // seconds
|
||||
Conditions: [
|
||||
['content-length-range', 0, 22 * 1048576] // up to 22 MB
|
||||
]
|
||||
})
|
||||
|
||||
res.status(200).json(post)
|
||||
}
|
Loading…
Reference in New Issue
Block a user