HuanMengAdmin/admin-server/MiaoYu.Api.Admin/Controllers/Uploads/UploadController.cs
2024-07-19 02:05:38 +08:00

98 lines
3.5 KiB
C#

namespace MiaoYu.Api.Admin.Controllers.Uploads;
/// <summary>
/// 上传文件控制器
/// </summary>
[AllowAnonymous]
public class UploadController : AdminControllerBase
{
private readonly IUploadManager _uploadService;
private readonly IFileManager fileManager;
public UploadController(IUploadManager uploadService, IFileManager fileManager)
{
_uploadService = uploadService;
this.fileManager = fileManager;
}
/// <summary>
/// 上传图片 针对富文本编辑器
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult Images()
{
var files = Request.Form.Files.Where(w => w.Name.Contains("editorFileImages")).ToList();
var paths = files.Select(item => _uploadService.HandleUploadFile(item)).ToList();
return new JsonResult(new
{
errno = 0,
data = paths
});
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost]
public UploadResultVO Upload(IFormFile file)
{
//IFormFileCollection
//var file1 = Request.Form.Files.Where(w => w.Name == "file").FirstOrDefault();
var result = _uploadService.HandleUploadFile(file);
//result.Url = AppConfiguration.Url + result.Url;
return result;
}
/// <summary>
/// 上传文件 只能上传 png和jpg 格式
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost]
public async Task<string> UploadPngAndJpgAsync(IFormFile file)
{
var result = string.Empty;
await fileManager.AddSaveFolder("图片") // 设置保存文件位置为 wwwroot目录下 配置文件配置路径下 图片路径
.ResetFileExtensions() // 清空已允许的上传格式
.AddFileExtensions(".png", ".jpg") // 追加允许的上传格式
.AddMaxLength("2MB") // 配置允许的上传大小
.BuildFileManagerContext() // 构建上传上下文
.FileUploadAsync(file) // 上传文件
.Success(info =>
{
LogUtil.Log.Information("上传成功");
result = info.FileRoot;
})
.Exists(info =>
{
LogUtil.Log.Information("上传文件重复");
result = info.FileRoot;
})
.Error(info =>
{
LogUtil.Log.Error(info.Exception, "上传文件错误");
if (info.State == FileContextStates.MaxLimit)
{
MessageBox.Show("文件长度超限");
}
else if (info.State == FileContextStates.NoneExtensions)
{
MessageBox.Show("不支持的文件类型");
}
else if (info.State == FileContextStates.NoneFile)
{
MessageBox.Show("上传文件为空");
}
else
{
MessageBox.Show(info.Exception.Message);
}
});
return result;
}
}