我如何检查图像上传到我的服务器实际上是一个有效的图像?在ASP核心验证/检查图像
我已检查过大小和扩展名,但没有任何东西阻止用户将不支持的文件的文件扩展名更改为支持的某些内容(本例中为.jpg和.png)。
我明白,ASP.NET有Drawing.Image这个,但ASP核心似乎缺乏我可以使用的任何东西。我可以为第三方解决方案提供一些建议吗?
我如何检查图像上传到我的服务器实际上是一个有效的图像?在ASP核心验证/检查图像
我已检查过大小和扩展名,但没有任何东西阻止用户将不支持的文件的文件扩展名更改为支持的某些内容(本例中为.jpg和.png)。
我明白,ASP.NET有Drawing.Image这个,但ASP核心似乎缺乏我可以使用的任何东西。我可以为第三方解决方案提供一些建议吗?
安装NuGet包CoreCompat.System.Drawing
那么你就可以在你的.NET核心项目使用System.Drawing
像旧时代:
using System.Drawing;
我来看看吧!谢谢:) –
@Braed不客气。我已经在我的两个项目中使用过它。 –
请原谅我的无知,但我会如何将其添加到我的项目?它没有NuGet包,我需要.NET Core 2.0版本。 –
使用CoreCompat.System.Drawing我已经作出了形象的有效性进行简单的检查,如下图所示。如果“图片”无法打开,那么它是腐败或假的,并会抛出一个我正在捕捉的异常。不完全是最好的解决方案,所以如果有人有更好的解决方案,让我知道!
try
{
var img = System.Drawing.Image.FromStream(file.OpenReadStream());
}
catch
{
return BadRequest("Invalid image.");
}
.jpg和.png是唯一支持的格式吗? – jebar8
有问题的图像是用户头像,所以是的。如果用户“伪造”一个jpg文件,该头像将不会正确加载到页面上。 –