【问题标题】:Validate Image type for IFormFile in ASP.Net Core在 ASP.Net Core 中验证 IFormFile 的图像类型
【发布时间】:2017-02-16 18:44:26
【问题描述】:

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

谢谢

【问题讨论】:

标签: c# asp.net asp.net-core


【解决方案1】:

现在“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;
}

【讨论】:

    【解决方案2】:

    如果您有权限在服务器上运行可执行文件,您可以使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多