CSharp-Single-EFCore/Bunny.WebApi/Controllers/MinioController.cs

103 lines
3.3 KiB
C#
Raw Normal View History

2024-09-02 09:00:50 +08:00
using Bunny.Dao.Model.Result;
using Bunny.Service.IService;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Mvc;
2024-08-20 10:14:15 +08:00
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; }
/// <summary>
/// 查询所有的桶
/// </summary>
/// <returns></returns>
[HttpGet]
public Result<ListAllMyBucketsResult> GetAllMyBuckets()
{
var listAllMyBucketsResult = MinioService.GetAllMyBuckets();
return Result<ListAllMyBucketsResult>.Success(listAllMyBucketsResult);
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="file">文件</param>
2024-08-20 10:14:15 +08:00
/// <param name="filepath"></param>
[HttpPost]
2024-08-20 10:14:15 +08:00
public Result<string> SaveMinioFile(IFormFile? file, string filepath = "test")
{
MinioService.SaveMinioFile(file, filepath);
return Result<string>.Success("上传成功");
}
2024-08-20 10:14:15 +08:00
/// <summary>
/// 获取文件信息
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="bucketName">桶名称</param>
/// <returns>ObjectStat</returns>
[HttpGet]
public Result<ObjectStat> GetObjectStat(string filename, string bucketName = "csharp-test")
{
var vo = MinioService.GetObjectStat(filename, bucketName);
2024-08-20 10:14:15 +08:00
return Result<ObjectStat>.Success(vo);
}
/// <summary>
/// 获取文件路径
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="bucketName">桶名称</param>
/// <returns>文件地址</returns>
[HttpGet]
public Result<string> GetObjectPath(string filename, string bucketName = "csharp-test")
{
var vo = MinioService.GetObjectPath(filename, bucketName);
2024-08-20 10:14:15 +08:00
return Result<string>.Success(vo);
}
/// <summary>
/// 下载文件
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="bucketName">桶名称</param>
/// <returns>下载文件</returns>
[HttpGet]
public IActionResult DownloadObject(string filename, string bucketName = "csharp-test")
{
var buffer = MinioService.DownloadObject(filename, bucketName).Result;
2024-08-20 10:14:15 +08:00
return File(buffer, "application/octet-stream", filename);
}
/// <summary>
/// 查看对象文件展示在网页中
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="bucketName">桶名称</param>
/// <returns>下载文件</returns>
[HttpGet]
public IActionResult ViewObject(string filename, string bucketName = "csharp-test")
{
var buffer = MinioService.DownloadObject(filename, bucketName).Result;
2024-08-20 10:14:15 +08:00
return File(buffer, "image/jpeg");
}
/// <summary>
/// 列出文件夹下所有文件
/// </summary>
/// <param name="filepath">文件夹</param>
/// <param name="bucketName">桶名称</param>
/// <returns>所有文件</returns>
[HttpGet]
public Result<IAsyncEnumerable<Item>> ListObject(string? filepath, string bucketName = "csharp-test")
{
var vo = MinioService.ListObject(filepath, bucketName);
2024-08-20 10:14:15 +08:00
return Result<IAsyncEnumerable<Item>>.Success(vo);
}
}