在C#/ .NET中检测图像URL

有没有办法可以检测到图片url,例如:

http://mysite.com/image.jpg 

但是还有其他格式吗? 我在.NET 4.0中使用C#。

就像是

 bool isImageUrl(string URL){ } 

编辑我的意思是如果URL指向图像。 例如,URL

 http://mysite.com/image.jpg 

一个有效的图像,但是

 http://mysite.com/image 

不是。

您可以向URL发送HTTP请求(使用HttpWebRequest ),并检查返回的ContentType是否以image/开头。

您可以使用Http的HEAD方法确定它(不下载整个图像)

 bool IsImageUrl(string URL) { var req = (HttpWebRequest)HttpWebRequest.Create(URL); req.Method = "HEAD"; using (var resp = req.GetResponse()) { return resp.ContentType.ToLower(CultureInfo.InvariantCulture) .StartsWith("image/"); } } 

您当然可以简单地检查URL是否以已知的图像文件扩展名结尾。 但是,更安全的方法是实际下载资源并检查您获得的内容是否是图像:

 public static bool IsUrlImage(string url) { try { var request = WebRequest.Create(url); request.Timeout = 5000; using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { if (!response.ContentType.Contains("text/html")) { using (var br = new BinaryReader(responseStream)) { // eg test for a JPEG header here var soi = br.ReadUInt16(); // Start of Image (SOI) marker (FFD8) var jfif = br.ReadUInt16(); // JFIF marker (FFE0) return soi == 0xd8ff && jfif == 0xe0ff; } } } } } catch (WebException ex) { Trace.WriteLine(ex); throw; } return false; } 

您可以使用.EndsWith()为您定义的每组字符串检查字符串。

如果您想知道该URL上的对象是否实际上是图像,您必须自己执行Web请求并检查内容类型的HTTP标头。

但是,这可能是不准确的,具体取决于服务器。