我將在.NET Core 1.0.1的新網站上接受用戶上傳。我只想讓圖像,但不只是任何文件。我如何在.NET Core中執行此驗證?沒有System.Drawing
,因爲沒有實施,是否可以這樣做?驗證上傳的文件是圖像
This answer看起來很有前途,但它最終使用System.Drawing
。是否足以檢查內容類型和擴展名?
編輯:接受的答案是我需要什麼,但我會在這裏分享我的實際執行情況。我在.NET Core中這樣做,但我很確定相同的代碼在完整的框架中工作。
static bool IsJpeg(Stream stream)
{
using (var br = new BinaryReader(stream))
{
var soi = br.ReadUInt16();
var marker = br.ReadUInt16();
return soi == 0xd8ff && (marker & 0xe0ff) == 0xe0ff;
}
}
static bool IsPng(Stream stream)
{
using (var br = new BinaryReader(stream))
{
var soi = br.ReadUInt64();
return soi == 0x0a1a0a0d474e5089;
}
}
static bool IsGif(Stream stream)
{
using (var br = new BinaryReader(stream))
{
var soi = br.ReadUInt32();
var p2 = br.ReadUInt16();
return soi == 0x38464947 && (p2 == 0x6137 || p2 == 0x6139);
}
}
」檢查內容類型和擴展名是否足夠? - 你想解決或避免什麼問題?我可以將'virus.exe'重命名爲'normalPicture.jpg',並將其上傳到您的網站,檢查擴展名不會停止(我不知道什麼設置內容類型,無論它可能只是看着擴展也不會「讀取」文件來確定它)。 – Quantic