.NET: التحقق من عنوان URL هو الصورة
سؤال
لدي شرط للتحقق من أن عنوان URL محدد المستخدم هو صورة. حقا أحتاج إلى وسيلة لتحديد سلسلة URL تشير إلى صورة صالحة. كيف يمكنني القيام بذلك في .NET؟
المحلول 3
إليك ما أستخدمه الآن. أي انتقادات؟
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;
}
}
نصائح أخرى
لا يمكنك القيام بذلك دون تنزيل الملف (على الأقل جزء منه). إستخدم WebClient
لجلب عنوان URL وحاول إنشاء جديد Bitmap
من عاد byte[]
. وبعد إذا كانت ناجحة، فهي حقا صورة. خلاف ذلك، سوف يرمي استثناء في مكان ما في هذه العملية.
بالمناسبة، أنت يمكن القضية HEAD
طلب والتحقق من Content-Type
رأس في الاستجابة (إذا كان هناك). ومع ذلك، هذه الطريقة ليست مخزنة. الخادم يمكن أن يستجيب مع غير صالح Content-Type
رأس.
أود استخدام httpwebrequest للحصول على الرؤوس، ثم تحقق من نوع المحتوى، وأن طول المحتوى غير صفر.
لا تنتمي إلى StackOverflow