检查uri是否有效
本文关键字:有效 是否 uri 检查 | 更新日期: 2023-09-27 18:16:57
Uri myuri = new Uri("https://buffalousercontent.blob.core.windows.net/371-static/profileimages/full/39398");
这是我的uri,当u点击时表示它接收到基于用户的图像,某些用户不包含图像,此时它接收到错误页面
如何检查接收到的一个是图像或c#代码中的东西?
如果您只是想验证URL是否包含图像:
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的回答),如果你只是寻找验证内容类型,而不是下载整个图像。
正如在其他答案中提到的,您可以查看响应的内容类型,或者您可以尝试从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.
}
要检查是否有错误,您必须发送请求,然后接收错误或良好blob。
发送请求,您可以使用WebClient
,如下所示:
public bool CheckUri(Uri uri){
using(var client = new WebClient()){
try{
client.DownloadFile(uri);
return true;
}catch{//error detected
return false;
}
}
}
执行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/");
}
}
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;
}
您可以使用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;
}
}