using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Common.FileOperation.Request;
using Dlhis.Basic.Common.FileOperation.Response;
using Dlhis.Basic.Common.FileOperation.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.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);
}
}