0

我正在尝试使用 AWS Ampify,但找不到好的参考。指南,我可以找到,但不是参考。如果我调用 Storage.get,例如下面的代码片段,并且 test.txt 不存在,返回什么?

Storage.get('test.txt')
    .then(result => console.log(result))
    .catch(err => console.log(err));

我发现它返回一个导致 404 的 URL。

4

2 回答 2

1

从 Amplify 0.4.7 开始,预期行为是返回导致 404 的 URL

如果要避免 404,可以使用 Storage.list() 检查文件是否存在。或者,您可以在实际使用之前尝试通过一些异常处理来预加载 URL。

这对我来说似乎是次优行为,尤其是对于像 angular 这样的框架,所以我提交了一个feature request

于 2018-07-03T14:56:13.693 回答
0

在创建新对象之前,我试图找出存储桶中是否存在该对象,这就是我的做法,希望对您有所帮助。

//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 存储桶权限是公共读取访问权限。如果您有不同的存储桶权限,那么此解决方案可能不适合您。

于 2020-12-10T20:08:52.333 回答