This commit is contained in:
2026-03-25 14:55:34 +08:00
commit 2c44b3a4b2
131 changed files with 7453 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
using FileSignatures;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace System.ComponentModel.DataAnnotations;
public class ImageFileValidationAttribute : ValidationAttribute
{
public ImageFileValidationAttribute(long length)
{
Length = length;
}
public long Length { get; set; }
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
var fileInspector = validationContext.GetRequiredService<IFileFormatInspector>();
if (null == fileInspector)
{
return new ValidationResult("未配置文件验证器");
}
if (value is IFormFile file)
{
var result = Validate(fileInspector, file);
if (null != result)
return result;
}
else if (value is IFormFileCollection files)
{
foreach (var f in files)
{
var result = Validate(fileInspector, f);
if (null != result)
return result;
}
}
return ValidationResult.Success;
}
private ValidationResult? Validate(IFileFormatInspector fileInspector, IFormFile file)
{
if (file.Length > Length)
return new ValidationResult("文件太大");
var format = fileInspector.DetermineFileFormat(file.OpenReadStream());
if (null == format)
return new ValidationResult("文件格式不支持");
return null;
}
}