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.
This commit is contained in:
@@ -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) {
|
async deleteFile(fileName: string, bucketName: string = this.bucketName) {
|
||||||
try {
|
try {
|
||||||
await this.minioClient.removeObject(bucketName, fileName);
|
await this.minioClient.removeObject(bucketName, fileName);
|
||||||
|
|||||||
Reference in New Issue
Block a user