2

ユーザー指定のURLが画像に対するものであることを確認する必要があります。したがって、URL文字列が有効な画像を指していることを確認する方法が本当に必要です。.NETでこれを行うにはどうすればよいですか?

4

3 に答える 3

3

ファイル(少なくともその一部)をダウンロードせずにそれを行うことはできません。を使用しWebClientてURLを取得しBitmap、返されたから新しいものを作成してみてくださいbyte[]。それが成功した場合、それは本当にイメージです。それ以外の場合は、プロセスのどこかで例外がスローされます。

ちなみに、リクエストを発行して、レスポンスのヘッダーを確認することができます(ヘッダーがある場合)。ただし、この方法は絶対確実ではありません。サーバーは無効なヘッダーで応答する可能性があります。HEADContent-TypeContent-Type

于 2009-09-20T07:37:45.143 に答える
2

HttpWebRequestを使用してヘッダーを取得し、コンテンツタイプを確認し、コンテンツの長さがゼロ以外であることを確認します。

于 2009-09-20T07:38:52.910 に答える
0

これが私が今使っているものです。批評はありますか?

public class Image
{
    public static bool Verifies(string url)
    {
        if (url == null)
        {
            throw new ArgumentNullException("url");
        }

        Uri address;

        if (!Uri.TryCreate(url, UriKind.Absolute, out address))
        {
            return false;
        }

        using (var downloader = new WebClient())
        {
            try
            {
                var image = new Bitmap(downloader.OpenRead(address));
            }
            catch (Exception ex)
            {
                if (// Couldn't download data
                    ex is WebException ||
                    // Data is not an image
                    ex is ArgumentException)
                {
                    return false;
                }
                else
                {
                    throw;
                }
            }
        }

        return true;
    }
}
于 2009-09-25T04:51:39.110 に答える