From 3d467e8219533d9f887f442ba9babd76084bc4bc Mon Sep 17 00:00:00 2001 From: April Hall Date: Fri, 21 Feb 2025 19:36:31 -0500 Subject: [PATCH] fix: Proper file extensions inside Minios --- src/lib/server/storage/minio-client.ts | 15 +++++++++++++-- src/routes/(server)/api/upload/+server.ts | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/server/storage/minio-client.ts b/src/lib/server/storage/minio-client.ts index b41dfcf..da80a9f 100644 --- a/src/lib/server/storage/minio-client.ts +++ b/src/lib/server/storage/minio-client.ts @@ -23,7 +23,18 @@ class MinioClient { }); } - async uploadProfile(stream: Readable) { + private getFileExtension(mimetype: string): string { + switch (mimetype) { + case 'image/jpeg': + return '.jpg'; + case 'image/png': + return '.png'; + default: + throw new Error('Unsupported file type'); + } + } + + async uploadProfile(stream: Readable, mime: string) { try { const bucket = 'profile-photos'; if (await !this.client.bucketExists(bucket)) { @@ -31,7 +42,7 @@ class MinioClient { console.log('Bucket "' + bucket + '" created in "us-east-1".'); } - const objectId = v4(); + const objectId = `${v4()}${this.getFileExtension(mime)}`; const upload = await this.client.putObject(bucket, objectId, stream); return { bucket, diff --git a/src/routes/(server)/api/upload/+server.ts b/src/routes/(server)/api/upload/+server.ts index d9e6245..0638f6e 100644 --- a/src/routes/(server)/api/upload/+server.ts +++ b/src/routes/(server)/api/upload/+server.ts @@ -23,7 +23,7 @@ export const POST = async ({ request }) => { const buffer = await file.arrayBuffer(); const stream = Readable.from(Buffer.from(buffer)); - const uploadResponse = await fsClient?.uploadProfile(stream); + const uploadResponse = await fsClient?.uploadProfile(stream, file.type); return json(uploadResponse); } catch (e) {