.NET Core 1.0.1の新しいWebサイトでユーザーのアップロードを受け付けます。ただ、ファイルだけでなく、イメージを許可したいだけです。 .NET Coreでこの検証を実行するにはどうすればよいですか? System.Drawing
が実装されていないので、これを行うことはできませんか?アップロードされたファイルが画像であることを確認してください
This answerは有望ですが、最終的にSystem.Drawing
を使用します。コンテンツの種類と拡張子を確認するだけで十分ですか?
EDIT:受け入れ答えは私が必要なものですが、私はここに私の実際の実装を共有しましょう。私は.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