Тест, чтобы видеть, существует ли изображение в C#

У вас есть URL, у вас есть файл чтения и у вас есть исполнение. Вам просто не хватает шага, где вы скачиваете файл.

Самый простой в использовании urllib в Python3:

import urllib.request

code = 'https://raw.githubusercontent.com/bensharkey3/Guess-The-Number/master/Guess%20the%20number%20game.py'

response = urllib.request.urlopen(code)
data = response.read()

exec(data)

Обратите внимание, что использование URL-адреса - довольно хрупкий способ убедиться, что у вас последний код. Намного лучше было бы использовать git для получения последних версий, но это должно, по крайней мере, помочь вам начать.

21
задан Dana 10 October 2008 в 16:18
поделиться

5 ответов

Просто используйте ГОЛОВУ. Никакая потребность загрузить все изображение, если Вам не нужен он. Здесь некоторый шаблонный код.

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("url");
request.Method = "HEAD";

bool exists;
try
{
    request.GetResponse();
    exists = true;
}
catch
{
   exists = false;
}
47
ответ дан 29 November 2019 в 06:16
поделиться

Я изучил бы HttpWebRequest вместо этого - я думаю, что предыдущий ответ на самом деле загрузит данные, тогда как необходимо быть в состоянии получить ответ без данных HttpWebRequest.

http://msdn.microsoft.com/en-us/library/456dfw4f.aspx , пока шаг № 4 не должен добиваться цели. Существуют другие поля на HttpWebResponse для получения цифрового кода если потребности быть...

hth Jack

-1
ответ дан 29 November 2019 в 06:16
поделиться

Я использовал что-то вроде этого прежде, но существует, вероятно, лучший путь:

try
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://somewhere/picture.jpg");
    request.Credentials = System.Net.CredentialCache.DefaultCredentials;
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    myImg.ImageUrl = "http://somewhere/picture.jpg";
}
catch (Exception ex)
{
    // image doesn't exist, set to default picture
    myImg.ImageUrl = "http://somewhere/default.jpg";
}
6
ответ дан 29 November 2019 в 06:16
поделиться

Вы могли бы хотеть также проверить, что Вы получили код статуса OK (т.е. HTTP 200) и что тип пантомимы от ответа возражает соответствиям, что Вы ожидаете. Вы могли расширить это вроде,

public bool doesImageExistRemotely(string uriToImage, string mimeType)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriToImage);
    request.Method = "HEAD";

    try
    {
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        if (response.StatusCode == HttpStatusCode.OK && response.ContentType == mimeType)
        {
            return true;
        }
        else
        {
            return false;
        }   
    }
    catch
    {
        return false;
    }
}
18
ответ дан 29 November 2019 в 06:16
поделиться

Необходимо избавиться от объекта HTTPWebResponse, иначе у Вас будут проблемы, как я имел...

    public bool DoesImageExistRemotely(string uriToImage)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriToImage);

            request.Method = "HEAD";

            try
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            catch (WebException) { return false; }
            catch
            {
                return false;
            }
    }
7
ответ дан 29 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: