53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
using Minio.DataModel.Args;
|
|
using Minio;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Configuration;
|
|
using FileUploader.Models;
|
|
|
|
namespace Hopetry.Services
|
|
{
|
|
class MinioService
|
|
{
|
|
|
|
private readonly IMinioClient _minioClient;
|
|
private readonly string _bucketName;
|
|
|
|
public MinioService(IConfiguration config)
|
|
{
|
|
var minioConfig = config.GetSection("Minio");
|
|
_minioClient = new MinioClient()
|
|
.WithEndpoint(minioConfig["Endpoint"])
|
|
.WithCredentials(minioConfig["AccessKey"], minioConfig["SecretKey"]);
|
|
|
|
_bucketName = minioConfig["BucketName"];
|
|
EnsureBucketExistsAsync().Wait();
|
|
}
|
|
|
|
private async Task EnsureBucketExistsAsync()
|
|
{
|
|
var existsArgs = new BucketExistsArgs().WithBucket(_bucketName);
|
|
if (!await _minioClient.BucketExistsAsync(existsArgs))
|
|
{
|
|
var makeArgs = new MakeBucketArgs().WithBucket(_bucketName);
|
|
await _minioClient.MakeBucketAsync(makeArgs);
|
|
}
|
|
}
|
|
|
|
public async Task UploadFileAsync(FileRecord fileRecord)
|
|
{
|
|
var putArgs = new PutObjectArgs()
|
|
.WithBucket(_bucketName)
|
|
.WithObject(fileRecord.FileName)
|
|
.WithFileName(fileRecord.LocalPath)
|
|
.WithContentType("application/octet-stream");
|
|
await _minioClient.PutObjectAsync(putArgs);
|
|
}
|
|
|
|
}
|
|
}
|