Files
jinko.yikatong/Src/Dlhis.Basic/Common/FileOperation/Controllers/FileController.cs
2024-10-24 16:05:08 +08:00

87 lines
2.6 KiB
C#

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;
/// <summary>
/// 文件操作
/// </summary>
[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;
}
/// <summary>
/// 文件上传
/// </summary>
/// <param name="request"></param>
/// <returns>相对路径</returns>
[HttpPost("{Bucket}/upload")]
public async Task<string> UploadFileAsync([FromForm] UploadFileRequest request)
{
return await _minioService.UploadFileAsync(request.Bucket, request.File);
}
/// <summary>
/// 文件上传(版本)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize]
[HttpPost("{Bucket}/version/upload")]
[RequestFormLimits(MultipartBodyLengthLimit = int.MaxValue)]
[RequestSizeLimit(int.MaxValue)]
public async Task<string> UploadFileAsync([FromForm] FileVersionUploadRequest request)
{
return await _fileVersionService.UploadFileAsync(request);
}
/// <summary>
/// 文件版本分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("version/page")]
public async Task<Pagination<FileVersionResponse>> GetPageAsync([FromQuery] PageDto request)
{
return await _fileVersionService.GetPageAsync(request);
}
/// <summary>
/// 文件版本列表
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("version/list")]
public async Task<List<FileVersionResponse>> GetListByCodeAsync([Required] string code)
{
return await _fileVersionService.GetListByCodeAsync(code);
}
/// <summary>
/// 文件版本最新
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("version/last")]
public async Task<FileVersionResponse> GetLastByCodeAsync([Required] string code)
{
return await _fileVersionService.GetLastByCodeAsync(code);
}
}