import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; import { Buffer } from 'node:buffer'; import { v4 as uuidv4 } from 'uuid'; class AWSUtil { constructor() { this.s3 = new S3Client({ region: "us-east-2" }); } async uploadFile(base64, ACL = "public-read") { const base64Data = Buffer.from(base64.replace(/^data:image\/\w+;base64,/, ""), 'base64'); const type = base64.split(';')[0].split('/')[1]; const uuid = uuidv4(); const params = { Bucket: process.env.AWS_S3_BUCKET, Key: `${uuid}.${type}`, Body: base64Data, ContentEncoding: 'base64', // required ContentType: `image/${type}` // required }; // Create an object and upload it to the Amazon S3 bucket. try { const results = await this.s3.send(new PutObjectCommand(params)); console.log( "Successfully created " + params.Key + " and uploaded it to " + params.Bucket + "/" + params.Key ); } catch (err) { console.log("Error", err); } return `https://tattletires.s3.us-east-2.amazonaws.com/${params.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;