有人知道某种方式,我怎么能知道加载的图像是不是图像,例如返回了404错误?
如果出现错误,我想将我的图片网址设置为例如白色图片。
我不能使用像404错误处理或servlet这样的服务器端技术,因为我想用Amazon S3提供我的图像,它没有错误处理或重定向到“默认文件”以防请求找不到图像。
答案 0 :(得分:7)
Image
类有addErrorHandler
方法。注册错误处理程序,如果图像未正确加载,则会触发该错误处理程序。在此处理程序中,您可以将图像设置为默认图像。
答案 1 :(得分:1)
您可能会发现此question的答案很有用。它使用jQuery但是检测到图像没有在浏览器中正确加载的想法得到了很好的处理。
答案 2 :(得分:0)
当询问此问题但S3当前有404错误处理时,不确定错误处理的状态。我用它来按需生成大拇指。
为静态网站托管设置存储桶
在静态网站托管部分下添加重定向规则,例如:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals/>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>yoursite.com</HostName>
<ReplaceKeyPrefixWith>image/generate/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
在上述情况下,丢失的图像(即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之后接收新图像,而是存储丢失的图像。