所以,我想要做的是用Javascript查看我的Amazon S3上是否存在图片。
我可以通过预加载图片的典型方式执行此操作,并使用 onload 和 onerror 事件来检查图像是否存在。
var img = new Image;
img.src = imageUrl;
img.onerror = function()....
img.onload = function()...
我现在想要实现的目标是相同的,但没有完全下载图像。 假设我有一个可能的3mb图像。如果我现在检查我的方式,如果图像不存在,它将进入 onerror 事件,我将调用我的服务器来生成图像,然后我会再次检查。当图像存在时,它将下载3mb图像,它将进入 onload 事件。
如果图片不存在,亚马逊会返回 403 Forbidden 状态代码。如果确实存在,则返回 200 Ok 。
我的问题是:
在没有完全下载图片的情况下,有没有办法检查状态代码或其他任何方式?
谢谢!
答案 0 :(得分:2)
尝试执行HEAD
请求,如此回答所示
https://stackoverflow.com/a/333657/209067
上面链接的答案的代码副本:
function UrlExists(url, callback)
{
var http = new XMLHttpRequest();
http.open('HEAD', url);
http.onreadystatechange = function() {
if (this.readyState == this.DONE) {
callback(this.status != 404);
}
};
http.send();
}
如果是您的情况,则需要检查403
而不是404