Uri myuri = new Uri("https://buffalousercontent.blob.core.windows.net/371-static/profileimages/full/39398");
这是我的uri,当你点击意味着它接收基于用户的图像某些用户不包含图像时,它会收到错误页面。
如何检查收到的是C#代码中的图像?
答案 0 :(得分:2)
如果您只想验证网址是否包含图片:
bool ValidateImage(string url)
{
HttpWebRequest r = (HttpWebRequest)WebRequest.Create(url);
r.Method = "GET";
try
{
HttpWebResponse resp = (HttpWebResponse)r.GetResponse();
if (resp.ContentType == "image/jpeg")
{
Console.WriteLine("Image retrieved successfully.");
// Process image
return true;
}
else
{
Console.WriteLine("Unable to retrieve image");
}
}
catch
{
Console.WriteLine("Unable to retrieve image.");
}
return false;
}
显然,将ContentType
检查更改为对您的应用程序有意义的检查。您还可以使用HEAD
作为请求方法(如@Chris'答案),如果您只是希望验证内容类型而不是下载整个图像
答案 1 :(得分:1)
如其他答案中所述,您可以查看响应的内容类型,也可以尝试从URI创建图像。
try {
var client = new WebClient();
var image = Image.FromStream(client.OpenRead(uri));
}
catch(ArguementException e) {
// this exception will be thrown if the URI doesn't point to a valid image.
}
答案 2 :(得分:0)
要检查是否有错误,您必须发送请求,然后收到错误或良好的blob。
要发送请求,您可以使用here所述的WebClient
:
public bool CheckUri(Uri uri){
using(var client = new WebClient()){
try{
client.DownloadFile(uri);
return true;
}catch{//error detected
return false;
}
}
}
答案 3 :(得分:0)
执行httprequest并检查响应内容类型是否等于“image /”。这个功能应该可以做到!
Boolean 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/");
}
}
答案 4 :(得分:0)
当Uri
对象本身不知道当你将它用作GET请求的地址时会发生什么。
要检查string
是否有效Uri
,您可以使用
Uri uri;
bool valid = Uri.TryCreate(stringInput, UriKind.Absolute, out uri);
检查请求的文件类型是什么
using (var client = new HttpClient())
{
var response = client.GetAsync(uri).Result;
var contentType = response.Content.Headers.ContentType;
}
答案 5 :(得分:0)
您可以使用Azure客户端API执行此操作。添加对Microsoft.WindowsAzure.StorageClient
的引用:
bool IsBlobJpeg(string blobUri)
{
try
{
Microsoft.WindowsAzure.StorageClient.CloudBlob blob =
new CloudBlob(
blobUri);
blob.FetchAttributes();
return (blob.Properties.ContentType == "image/jpeg");
}
catch (StorageClientException ex)
{
Console.WriteLine(String.Format("{0} Does not exist", blobUri));
return false;
}
}