如何确定对象是否存在AWS S3 Node.JS sdk

我需要使用AWS SDK来检查文件是否存在。

这是我在做什么:

var params = { Bucket: config.get('s3bucket'), Key: path }; s3.getSignedUrl('getObject', params, callback); 

有用。 问题是,当对象不存在时,callback(带有参数err和url)不会返回错误,当我尝试访问URL时,它会显示“NoSuchObject”。

当对象不存在时,这个getSignedUrl方法不应该返回一个错误对象吗?

如何确定对象是否存在? 我真的需要对返回的url进行调用吗?

谢谢。

在创build签名的URL之前,您需要检查文件是否直接从存储桶中存在。 一种方法是通过请求HEAD元数据。

 s3.headObject(params, function (err, metadata) { if (err && err.code === 'NotFound') { // Handle no object on cloud here } else { s3.getSignedUrl('getObject', params, callback); } }); 

像这样使用getObject方法:

 var params = { Bucket: config.get('s3bucket'), Key: path }; s3.getObject(params, function(err, data){ if(err) { console.log(err); }else { var signedURL = s3.getSignedUrl('getObject', params, callback); console.log(signedURL); } });