当文件不存在时,Storage.get 在 AWS Amplify 中返回什么?
What is returned by Storage.get in AWS Amplify when the file doesn't exist?
我正在尝试使用 AWS Ampify,但找不到好的参考资料。 A guide,我能找到,但不是参考。如果我调用 Storage.get,例如下面的代码片段,而 test.txt 不存在,返回什么?
Storage.get('test.txt')
.then(result => console.log(result))
.catch(err => console.log(err));
我发现 returns URL 结果是 404。
从 Amplify 0.4.7 开始,预期的行为是 return a URL that results in a 404。
如果您想避免 404,可以使用 Storage.list() 检查文件是否存在。或者您可以在实际使用之前尝试通过一些异常处理预加载 URL。
这对我来说似乎不是最佳行为,尤其是对于像 angular 这样的框架,所以我提交了 feature request。
我试图在创建新对象之前查明该对象是否存在于存储桶中,我就是这样做的,希望对您有所帮助。
//make a get request of the object you want calling it by it's name
await Storage.get("key")
.then((response) => { //The response is a url to the s3 object
fetch(response).then((result) => { //fetch the URL
if(result.status === 200) { //if the file exists
console.log("file exists in the bucket");
} else { //if the status is 403 or others, the s3 object doesn't exist
console.log("file doesnt exist")
}
});
})
.catch((err) => console.log(err));
注意:
我的 S3 Bucket 权限是 public 读取权限。如果您有不同的存储桶权限,那么此解决方案可能不适合您。
我正在尝试使用 AWS Ampify,但找不到好的参考资料。 A guide,我能找到,但不是参考。如果我调用 Storage.get,例如下面的代码片段,而 test.txt 不存在,返回什么?
Storage.get('test.txt')
.then(result => console.log(result))
.catch(err => console.log(err));
我发现 returns URL 结果是 404。
从 Amplify 0.4.7 开始,预期的行为是 return a URL that results in a 404。
如果您想避免 404,可以使用 Storage.list() 检查文件是否存在。或者您可以在实际使用之前尝试通过一些异常处理预加载 URL。
这对我来说似乎不是最佳行为,尤其是对于像 angular 这样的框架,所以我提交了 feature request。
我试图在创建新对象之前查明该对象是否存在于存储桶中,我就是这样做的,希望对您有所帮助。
//make a get request of the object you want calling it by it's name
await Storage.get("key")
.then((response) => { //The response is a url to the s3 object
fetch(response).then((result) => { //fetch the URL
if(result.status === 200) { //if the file exists
console.log("file exists in the bucket");
} else { //if the status is 403 or others, the s3 object doesn't exist
console.log("file doesnt exist")
}
});
})
.catch((err) => console.log(err));
注意:
我的 S3 Bucket 权限是 public 读取权限。如果您有不同的存储桶权限,那么此解决方案可能不适合您。