using Bunny.Dao.Model.Result;
using Bunny.Service.IService;
using Microsoft.AspNetCore.Mvc;
using Minio.DataModel;
using Minio.DataModel.Result;
namespace Bunny.WebApi.Controllers;
[Route("/api/[controller]/[action]")]
[ApiController]
public class MinioController(IMinioService minioService) : ControllerBase
{
///
/// 查询所有的桶
///
///
[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);
}
}