From 9963046e41fbcc5e57d864a292bd5029dbe60068 Mon Sep 17 00:00:00 2001 From: Mathis HERRIOT <197931332+0x485254@users.noreply.github.com> Date: Thu, 8 Jan 2026 15:26:50 +0100 Subject: [PATCH] feat: add method to generate presigned S3 upload URLs Implemented a `getUploadUrl` method in S3 service to generate presigned URLs for uploading files. Includes support for custom bucket names and expiry times, with error handling and logging. --- backend/src/s3/s3.service.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/backend/src/s3/s3.service.ts b/backend/src/s3/s3.service.ts index adb8495..3beb7bd 100644 --- a/backend/src/s3/s3.service.ts +++ b/backend/src/s3/s3.service.ts @@ -89,6 +89,26 @@ export class S3Service implements OnModuleInit { } } + async getUploadUrl( + fileName: string, + expiry = 3600, + bucketName: string = this.bucketName, + ) { + try { + return await this.minioClient.presignedUrl( + "PUT", + bucketName, + fileName, + expiry, + ); + } catch (error) { + this.logger.error( + `Error getting upload URL for ${bucketName}: ${error.message}`, + ); + throw error; + } + } + async deleteFile(fileName: string, bucketName: string = this.bucketName) { try { await this.minioClient.removeObject(bucketName, fileName);