首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp:图像显示图像或非图像

asp:图像显示图像或非图像
EN

Stack Overflow用户
提问于 2012-01-26 15:59:44
回答 3查看 217关注 0票数 0

我使用asp:image字段从不同的urls获取图像。我使用imageurl来设置来自远程网站(例如:http://www.google.com/favicon.ico)的图像字符串,问题是我如何判断图像是否存在?这意味着图像的Url是有效的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-26 16:04:49

您可以使用Uri.TryCreate method验证URI是否有效。

您不应该检查ASP.Net应用程序中是否存在该图像。下载图像是浏览器的工作。您可以添加javascript以允许浏览器用缺省图像替换缺少的图像,如this question中所述。

票数 0
EN

Stack Overflow用户

发布于 2012-01-26 16:16:10

只使用asp:Image控件是无法做到这一点的。然而,通过一些额外的工作,可以使用ASHX处理程序来为图像制作一个程序化的HttpRequest (例如,使用查询字符串上的图像)。如果HttpRequest成功,则可以将图像流式传输到响应。

如果HttpRequest返回404状态,那么您可以提供另一个预定义的映像。

然而,这就像用大锤敲坚果一样,不应该在整个站点中广泛使用,因为它可能会产生大量负载-本质上,您是在请求服务器(而不是用户的浏览器)下载图像。此外,如果不小心实现,它可能会带来潜在的XSS安全风险。

对于个别情况,特别是当您实际需要在本地保留所请求的图像时,这是很好的。请求的任何映像都应写入磁盘,以便将来的请求可以为以前保留的映像提供服务。

显然,Javascript也是一种解决方案,但我将上面提到的作为一种可能性,这取决于需求。

票数 0
EN

Stack Overflow用户

发布于 2012-01-26 16:51:48

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9015237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档