예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }