有这样一种控制器测试方法
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
if (file == null || file.Length == 0)
return Content("file not selected");
var ms = new MemoryStream();
file.OpenReadStream().CopyTo(ms);
byte[] fileBytes = ms.ToArray();
try
{
Console.WriteLine($"ClamAV scan begin for file {file.FileName}");
var clam = new ClamClient("localhost", 3310);
var scanResult = await clam.SendAndScanFileAsync(fileBytes);
switch (scanResult.Result)
{
case ClamScanResults.Clean:
Console.WriteLine($"The file is clean! ScanResult: {scanResult.RawResult}");
break;
case ClamScanResults.VirusDetected:
Console.WriteLine($"Virus Found! Virus name: {scanResult.InfectedFiles.FirstOrDefault().VirusName}");
break;
case ClamScanResults.Error:
Console.WriteLine($"An error occurred while scanning the file! ScanResult: {scanResult.RawResult}");
break;
case ClamScanResults.Unknown:
Console.WriteLine($"Unknown scan result while scanning the file! ScanResult: {scanResult.RawResult}");
break;
}
}
catch (Exception ex)
{
Console.WriteLine($"ClamAV Scan Exception: {ex.Message}");
}
return RedirectToAction("Index");
}
它接受一个文件进行扫描,它接受 IFormFile,并且文件最大为 20MB+ - 一切都很好,它们被下载并扫描,但是当我尝试上传一个重 47MB 的文件时,我在 IFormFile 中得到 null,我尝试设置一个轻微的值延迟(我不知道我希望什么),尝试将其添加到 Program 类中
builder.Services.Configure<FormOptions>(options =>
{
options.MultipartBodyLengthLimit = 100 * 1024 * 1024;
});
但这也没有帮助,很可能是限制文件大小的问题,如下所示:
如何增加iis express中上传到服务器的附件的最大大小?
但是,我根本没有答案中引用的这个文件,并且项目中根本没有 XML 文件。告诉我需要做什么...
尝试
Program.cs添加:或使用
[RequestSizeLimit(100 * 1024 * 1024)]控制器上的属性。