adding aws upload to the create post api
This commit is contained in:
50
api/bin/aws.js
Normal file
50
api/bin/aws.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import AWS from 'aws-sdk';
|
||||
import { Buffer } from 'node:buffer';
|
||||
|
||||
|
||||
class AWSUtil {
|
||||
constructor() {
|
||||
this.s3 = new AWS.S3({
|
||||
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
||||
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
||||
});
|
||||
}
|
||||
|
||||
async uploadFile(base64, folder, ACL = "public-read") {
|
||||
const base64Data = Buffer.from(base64.replace(/^data:image\/\w+;base64,/, ""), 'base64');
|
||||
const type = base64.split(';')[0].split('/')[1];
|
||||
const userId = 1;
|
||||
const params = {
|
||||
Bucket: process.env.AWS_S3_BUCKET,
|
||||
Key: `${userId}.${type}`,
|
||||
Body: base64Data,
|
||||
ACL,
|
||||
ContentEncoding: 'base64', // required
|
||||
ContentType: `image/${type}` // required
|
||||
}
|
||||
|
||||
let location = '';
|
||||
let key = '';
|
||||
try {
|
||||
const { Location, Key } = await this.s3.upload(params).promise();
|
||||
location = Location;
|
||||
key = Key;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
return {location, key}
|
||||
}
|
||||
|
||||
async deleteFile(Location) {
|
||||
const params = {
|
||||
Bucket: process.env.AWS_S3_BUCKET,
|
||||
Key: Location.split("s3.amazonaws.com/").pop()
|
||||
};
|
||||
|
||||
const data = await this.s3.deleteObject(params).promise();
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
export default AWSUtil;
|
||||
Reference in New Issue
Block a user