adding aws upload to the create post api

This commit is contained in:
Will Baumbach
2025-07-26 13:06:35 -05:00
parent 2704577d39
commit 54e960eaf6
8 changed files with 663 additions and 12 deletions

50
api/bin/aws.js Normal file
View 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;