using System.ComponentModel.DataAnnotations; using Dlhis.Common.FileOperation.Request; using Dlhis.Common.FileOperation.Response; using Dlhis.Common.FileOperation.Services; using Kurisu.AspNetCore.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Common.FileOperation.Controllers; /// /// 文件操作 /// [Authorize] [Route("api/[controller]")] [ApiController] public class FileController : ControllerBase { private readonly IMinioService _minioService; private readonly IFileVersionService _fileVersionService; public FileController(IMinioService minioService, IFileVersionService fileVersionService) { _minioService = minioService; _fileVersionService = fileVersionService; } /// /// 文件上传 /// /// /// 相对路径 [HttpPost("{Bucket}/upload")] public async Task UploadFileAsync([FromForm] UploadFileRequest request) { return await _minioService.UploadFileAsync(request.Bucket, request.File); } /// /// 文件上传(版本) /// /// /// [Authorize] [HttpPost("{Bucket}/version/upload")] [RequestFormLimits(MultipartBodyLengthLimit = int.MaxValue)] [RequestSizeLimit(int.MaxValue)] public async Task UploadFileAsync([FromForm] FileVersionUploadRequest request) { return await _fileVersionService.UploadFileAsync(request); } /// /// 文件版本分页 /// /// /// [HttpGet("version/page")] public async Task> GetPageAsync([FromQuery] PageDto request) { return await _fileVersionService.GetPageAsync(request); } /// /// 文件版本列表 /// /// /// [HttpGet("version/list")] public async Task> GetListByCodeAsync([Required] string code) { return await _fileVersionService.GetListByCodeAsync(code); } /// /// 文件版本最新 /// /// /// [HttpGet("version/last")] public async Task GetLastByCodeAsync([Required] string code) { return await _fileVersionService.GetLastByCodeAsync(code); } }