public async Task <ServiceResponse <string> > GetPresignedUploadUrlAsync(DTOs.Uploads.FileInfo fileInfo) { var response = new ServiceResponse <string>(); try { S3Helper s3 = new S3Helper(_config); string url = await s3.GetPresignedUploadUrlAsync(fileInfo); response.Data = url; return(response); } catch (Exception ex) { _logger.LogError(ex.Message, ex.StackTrace); response.Success = false; response.Message = ex.Message; response.Code = ErrorCode.FILE_UPLOAD_ERROR; return(response); } }
public async Task <string> GetPresignedUploadUrlAsync(DTOs.Uploads.FileInfo fileInfo) { string endpoint = _config["AppSettings:S3Endpoint"]; string apiKey = _config["AppSettings:S3ApiKey"]; string apiSecret = _config["AppSettings:S3ApiSecret"]; string bucketName = _config["AppSettings:S3BucketName"]; PostPolicy policy = new PostPolicy(); DateTime expiredIn = DateTime.UtcNow.AddMinutes(15); policy.SetExpires(expiredIn); policy.SetContentLength(fileInfo.Size); policy.SetcontentType(fileInfo.ContentType); policy.SetKey(fileInfo.Name); policy.SetBucket(bucketName); var minio = new MinioClient(endpoint, apiKey, apiSecret); await minio.PresignedPostPolicyAsync(policy); string presignedUrl = await minio.PresignedPutObjectAsync(bucketName, fileInfo.Name, 15 * 60); return(presignedUrl); }