asp: изображение на дисплее или нет - PullRequest
0 голосов
/ 26 января 2012

Я использую поле asp: image для получения изображения с разных URL.Я использую imageurl для установки строки изображения с удаленного веб-сайта (например: http://www.google.com/favicon.ico),. Вопрос в том, как определить, существует ли изображение или нет? Это означает, что URL-адрес изображения действителен.

Ответы [ 3 ]

0 голосов
/ 26 января 2012

Вы не можете сделать это, используя только asp: Image control.Однако, немного поработав, можно было бы использовать обработчик ASHX, чтобы сделать для изображения программный HttpRequest (например, используя изображение в строке запроса).Если HttpRequest успешно, вы можете затем передать изображение в ответ.

Если HttpRequest возвращает статус 404, тогда вы можете использовать другое предопределенное изображение вместо этого.

Однако,это похоже на использование кувалды для взлома гайки, и его не следует широко использовать по всему сайту, поскольку это может потенциально создать значительную нагрузку - по сути, вы просите сервер (не браузер пользователя) загрузить изображение.Также это может быть потенциальная угроза безопасности XSS, если она не будет реализована тщательно.

Это подойдет для отдельных случаев, особенно когда вам действительно нужно сохранить запрошенное изображение локально.Любые запрошенные изображения должны быть записаны на диск, чтобы будущие запросы могли обслуживать ранее сохраненные изображения.

Очевидно, Javascript также является решением, но я упомяну вышеупомянутое как возможность, в зависимости от требований.

0 голосов
/ 26 января 2012
class MyClient : WebClient
{
    public bool HeadOnly { get; set; }
    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest req = base.GetWebRequest(address);
        if (HeadOnly && req.Method == "GET")
        {
            req.Method = "HEAD";
        }
        return req;
    }
}


private bool headOnly;
public bool HeadOnly {
    get {return headOnly;}
    set {headOnly = value;}
}


using(var client = new MyClient()) {
    client.HeadOnly = true;
    // fine, no content downloaded
    string s1 = client.DownloadString("http://google.com");
    // throws 404
    string s2 = client.DownloadString("http://google.com/silly");
}

попробуйте это !!!

0 голосов
/ 26 января 2012

Вы можете проверить, допустим ли URI, используя метод Uri.TryCreate .

Вы не должны проверять, существует ли изображение в вашем приложении ASP.Net. Это задача браузера - загрузить изображение. Вы можете добавить JavaScript, чтобы позволить браузеру заменить отсутствующее изображение изображением по умолчанию, как описано в этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...