繁体   English   中英

在ASP.Net Core中验证IFormFile的图像类型

[英]Validate Image type for IFormFile in ASP.Net Core

我有一个ASP.NET核心应用程序,我需要验证上传的文件是图像而不是具有图像扩展名的非图像文件....我发现并且有意义的所有解决方案都使用System.Drawing.Image或ASP.NET Core中不可用的类似类。 你能建议一个替代方案吗? *请注意,我不是要检查扩展名,而是检查内容。

谢谢

现在“System.Drawing.Common”NuGet可用于.NET Core。

您可以执行以下操作来验证“可能”的图像:

using System.Drawing;
// ...
public bool IsImage(byte[] data)
{
  var dataIsImage = false;
  using (var imageReadStream = new MemoryStream(data))
  {
    try
    {
      using (var possibleImage = Image.FromStream(imageReadStream))
      {
      }
      dataIsImage = true;
    }
    // Here you'd figure specific exception to catch. Do not leave like that.
    catch
    {
      dataIsImage = false;
    }
  }

  return dataIsImage;
}

如果您有权在服务器上运行可执行文件,则可以使用imagemagick的identify命令。 这是很多工作。你需要在服务器上安装imagemagick并且需要具有运行可执行文件的权限。

https://www.imagemagick.org/script/identify.php

你需要调用程序并将图像文件提供给它

如何在c#中调用exe文件: https//msdn.microsoft.com/en-us/library/0w4h05yb(v=vs.110).aspx

如何阅读流程输出: https//msdn.microsoft.com/en-us/library/system.diagnostics.process.beginoutputreadline(v=vs.110).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM