using Bunny.Dao.Common.Result;
using Bunny.Service.IService;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Mvc;
using Minio.DataModel;
using Minio.DataModel.Result;
namespace Bunny.WebApi.Controllers;
[Microsoft.AspNetCore.Mvc.Route("/api/[controller]/[action]")]
[ApiController]
public class MinioController : ControllerBase
{
[Inject] public required IMinioService MinioService { get; set; }
///
/// 查询所有的桶
///
///
[HttpGet]
public Result GetAllMyBuckets()
{
var listAllMyBucketsResult = MinioService.GetAllMyBuckets();
return Result.Success(listAllMyBucketsResult);
}
///
/// 上传文件
///
/// 文件
///
[HttpPost]
public Result SaveMinioFile(IFormFile? file, string filepath = "test")
{
MinioService.SaveMinioFile(file, filepath);
return Result.Success("上传成功");
}
///
/// 获取文件信息
///
/// 文件名
/// 桶名称
/// ObjectStat
[HttpGet]
public Result GetObjectStat(string filename, string bucketName = "csharp-test")
{
var vo = MinioService.GetObjectStat(filename, bucketName);
return Result.Success(vo);
}
///
/// 获取文件路径
///
/// 文件名
/// 桶名称
/// 文件地址
[HttpGet]
public Result GetObjectPath(string filename, string bucketName = "csharp-test")
{
var vo = MinioService.GetObjectPath(filename, bucketName);
return Result.Success(vo);
}
///
/// 下载文件
///
/// 文件名
/// 桶名称
/// 下载文件
[HttpGet]
public IActionResult DownloadObject(string filename, string bucketName = "csharp-test")
{
var buffer = MinioService.DownloadObject(filename, bucketName).Result;
return File(buffer, "application/octet-stream", filename);
}
///
/// 查看对象文件展示在网页中
///
/// 文件名
/// 桶名称
/// 下载文件
[HttpGet]
public IActionResult ViewObject(string filename, string bucketName = "csharp-test")
{
var buffer = MinioService.DownloadObject(filename, bucketName).Result;
return File(buffer, "image/jpeg");
}
///
/// 列出文件夹下所有文件
///
/// 文件夹
/// 桶名称
/// 所有文件
[HttpGet]
public Result> ListObject(string? filepath, string bucketName = "csharp-test")
{
var vo = MinioService.ListObject(filepath, bucketName);
return Result>.Success(vo);
}
}