[英]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.