我如何檢查圖像上傳到我的服務器實際上是一個有效的圖像?在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文件,該頭像將不會正確加載到頁面上。 –