2012-05-30 2 views
6

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

Каков наилучший способ проверить, действителен ли URL изображения?

+1

http://stackoverflow.com/questions/1588854/fallback-image-and-timeout-external-content-javascript есть атрибут onerror в теге img – jjchiw

+0

^Извините, я не видел этого, прежде чем отвечать. –

ответ

9

В зависимости от того, как вы получаете ваши изображения вариации это может работать

<html> 
    <body> 
     <img src="<dynamic handler url>" alt="My Username" onError="this.src='defaultProfile.jpg';" /> 
    </body> 
</html> 

Это, как вы могли бы сделать это в ASP.NET.

Дизайнер -

<asp:Image ImageUrl="NonexistentImage.Jpg" ID="profileImage" Height="50" Width="50" runat=server /> 

Код Behind (C#)

profileImage.Attributes["onerror"] = "this.src='http://www.cs.uofs.edu/~olivetoj2/blah.jpg';"; 

Это отлично работает для меня.

+0

Спасибо. Я попробую это. не имеет этого атрибута. –

+0

вы можете установить его, добавив его в коллекции атрибутов, http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.attributes.aspx –

+0

onError, похоже, не работает ни для или Это фактически сказано, что onError не является допустимым элементом

2
WebRequest webRequest = WebRequest.Create(url); 
WebResponse webResponse; 
try 
{ 
    webResponse = webRequest.GetResponse(); 
} 
catch //If exception thrown then couldn't get response from address 
{ 
    return 0; 
} 
return 1; 
+0

Вы забыли закрыть объекты ответа, и это приведет к проблемам. – Aristos

2

Вы можете получить это в jQuery довольно легко.

$("#myImage") 
    .load(function() { alert("it loaded ok") }) 
    .error(function() { $(this).attr("src", alternateImage) }); 
0

Из кода-за проверки

File.Exists(Server.MapPath("file path")) 

Если она возвращает верно, то присвоить значение, в противном случае присвоить миниатюру по умолчанию.

+0

Его говорят, что это на другом компьютере. – Aristos