import { fileTypeFromBuffer } from 'file-type'; import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'; import { createId } from '@paralleldrive/cuid2'; const s3 = new S3Client({ region: 'eu-west-1', credentials: { accessKeyId: process.env.S3_AWS_KEY || '', secretAccessKey: process.env.S3_AWS_SECRET || '' } }); export async function uploadAvatar(file: File) { const imageName = `${createId()}.${file.name.split('.').slice(-1)}`; const arrayBuffer = await file.arrayBuffer(); const buffer = Buffer.from(arrayBuffer); const mime = await fileTypeFromBuffer(buffer); const uploadToS3Command = new PutObjectCommand({ Bucket: process.env.S3_BUCKET_NAME || '', Key: imageName, Body: buffer, ACL: 'public-read', ContentType: mime?.mime }); await s3.send(uploadToS3Command); return imageName; }