找出加载的图像是否无效(例如404错误页面)

时间:2011-01-07 13:17:34

标签: javascript gwt

有人知道某种方式,我怎么能知道加载的图像是不是图像,例如返回了404错误?

如果出现错误,我想将我的图片网址设置为例如白色图片。

我不能使用像404错误处理或servlet这样的服务器端技术,因为我想用Amazon S3提供我的图像,它没有错误处理或重定向到“默认文件”以防请求找不到图像。

3 个答案:

答案 0 :(得分:7)

Image类有addErrorHandler方法。注册错误处理程序,如果图像未正确加载,则会触发该错误处理程序。在此处理程序中,您可以将图像设置为默认图像。

答案 1 :(得分:1)

您可能会发现此question的答案很有用。它使用jQuery但是检测到图像没有在浏览器中正确加载的想法得到了很好的处理。

答案 2 :(得分:0)

当询问此问题但S3当前有404错误处理时,不确定错误处理的状态。我用它来按需生成大拇指。

  1. 为静态网站托管设置存储桶

  2. 在静态网站托管部分下添加重定向规则,例如:

    <RoutingRules>
      <RoutingRule>
        <Condition>
          <KeyPrefixEquals/>
          <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
          <HostName>yoursite.com</HostName>
          <ReplaceKeyPrefixWith>image/generate/</ReplaceKeyPrefixWith>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    
  3. 在上述情况下,丢失的图像(即cat.jpg)将调用:

    http://yoursite.com/image/generate/cat.jpg
    

    在我的情况下,我使用它来提供缩略图。

    这是一个用例:

    <img src="http://awsbucketurl.com/thumb_cat.jpg">
    

    这导致由S3触发的404,然后使用url调用我的站点。我看到它以'thumb_'为前缀,然后从S3获取cat.jpg,调整大小,下次将拇指上传到S3并将其传送到浏览器进行此会话。

    一个警告:如果图像是由缓存系统调用的,那么它将不会在404之后接收新图像,而是存储丢失的图像。