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); } }