feat: add s3 media controller
This commit is contained in:
parent
f9c776b7a3
commit
31e4b854db
1 changed files with 49 additions and 0 deletions
49
src/controllers/MediaController.ts
Normal file
49
src/controllers/MediaController.ts
Normal file
|
@ -0,0 +1,49 @@
|
|||
import Organization from '../models/Organization'
|
||||
import * as express from 'express'
|
||||
import aws from 'aws-sdk'
|
||||
import multer from 'multer'
|
||||
import multerS3 from 'multer-s3'
|
||||
|
||||
export default class MediaController {
|
||||
static uploadRoute(): express.RequestHandler[] {
|
||||
//
|
||||
aws.config.update({
|
||||
secretAccessKey: process.env.S3_SECRET_KEY,
|
||||
accessKeyId: process.env.S3_ACCESS_KEY,
|
||||
region: 'fr-par',
|
||||
httpOptions: {
|
||||
timeout: 4 * 60 * 1000,
|
||||
}
|
||||
})
|
||||
|
||||
const s3 = new aws.S3({
|
||||
endpoint: 's3.fr-par.scw.cloud'
|
||||
})
|
||||
|
||||
return [
|
||||
multer({
|
||||
storage: multerS3({
|
||||
s3: s3,
|
||||
bucket: 'development-bucket',
|
||||
acl: 'public-read',
|
||||
contentType: multerS3.AUTO_CONTENT_TYPE,
|
||||
key: (req: any, file: any, cb: any) => {
|
||||
console.log(file)
|
||||
cb(null, Date.now().toString() + '_' + file.originalname) //use Date.now() for unique file keys
|
||||
}
|
||||
})
|
||||
}).single('file'),
|
||||
this.upload
|
||||
]
|
||||
}
|
||||
|
||||
static upload(req: express.Request, res: express.Response) {
|
||||
|
||||
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: { file: req.file }
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue