目标效果:
项目中显示视频列表时,如果缩略图不存在,则加载一个默认图片。而不是一个很丑的小红叉。其中缩略图图片是存在另外一个独立的视频服务器上的,所以我们不能用File.Exist()方法直接判断,需要另辟蹊径。
实现步骤:
前台采用 asp:Repeater 控件,添加事件onitemdatabound="rptTraining_ItemDataBound"。
protected void rptTraining_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Image img = (Image)e.Item.FindControl("img");
if (!RemoteFileExists (img.ImageUrl ))
{
img.ImageUrl = "images/memo.jpg";//如果图片不存在,则加载默认图片
}
}
{
Image img = (Image)e.Item.FindControl("img");
if (!RemoteFileExists (img.ImageUrl ))
{
img.ImageUrl = "images/memo.jpg";//如果图片不存在,则加载默认图片
}
}
加载每一条记录的时候都检测一下远程服务器上是否存在图片,RemoteFileExists方法如下。
/// <summary>
/// 判断远程文件是否存在
/// </summary>
/// <param name="fileUrl">文件URL</param>
/// <returns>存在-true,不存在-false</returns>
private bool RemoteFileExists(string fileUrl)
{
bool result = false;//下载结果
WebResponse response = null;
try
{
WebRequest req = WebRequest.Create(fileUrl);
response = req.GetResponse();
result = response == null ? false : true;
}
catch (Exception ex)
{
result = false;
}
finally
{
if (response != null)
{
response.Close();
}
}
return result;
}
/// 判断远程文件是否存在
/// </summary>
/// <param name="fileUrl">文件URL</param>
/// <returns>存在-true,不存在-false</returns>
private bool RemoteFileExists(string fileUrl)
{
bool result = false;//下载结果
WebResponse response = null;
try
{
WebRequest req = WebRequest.Create(fileUrl);
response = req.GetResponse();
result = response == null ? false : true;
}
catch (Exception ex)
{
result = false;
}
finally
{
if (response != null)
{
response.Close();
}
}
return result;
}
至此,实现了想要的效果。
知识虽小,重在点滴。积跬步方以至千里。
本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/archive/2010/12/14/1905625.html,如需转载请自行联系原作者