gpt4 book ai didi

reactjs - 读取文本文件 aws-amplify s3 从预签名 URL 读取数据

转载 作者:行者123 更新时间:2023-12-02 17:08:56 24 4
gpt4 key购买 nike

如何使用 aws-amplify 库读取 s3 中的文本文件?我能够获得预签名的 URL,但在访问该 URL 时出现错误,

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>
private/xx-xxxx-4:42134231243423142131423/filename.json
</Key>
<RequestId>1242341243</RequestId>
<HostId>
uudawfeawefhszec/6kM8VawefawefawfawefawefgwegweawgeagweyRk=
</HostId>
</Error>

文档中有关于如何获取 url 的说明:

Storage.get('test.txt', {level: 'private'})
.then(result => console.log(result))
.catch(err => console.log(err));

结果是路径的 url,而不是文本。当我运行 http get 方法时,端点不存在。

获取数据的最佳做法是什么?我正在使用 react 。

如果有 Storage.getText(...) 这样的方法,那将是最好的情况。

我试过使用这个添加授权...

  Auth.currentCredentials()
.then(credentials => {
axios.get(result, { headers: { 'Authorization': JSON.stringify(Auth.essentialCredentials(credentials)) } })
.then(r => {

console.log(r);
})
});

400 错误请求:(

最佳答案

查看源代码,S3Image 类在 Storage.get 方法中使用了一个未记录的参数

Storage.get('...', {download: true}) 

是获取对象的正确方式。

对象需要解码

    Storage.get('modules.json', { download: true })
.then(result => {
console.log(Utf8ArrayToStr(result.Body));
})
.catch(err => {
console.log('error axios');
console.log(err)
});

function Utf8ArrayToStr(array) {
var out, i, len, c;
var char2, char3;

out = "";
len = array.length;
i = 0;
while (i < len) {
c = array[i++];
switch (c >> 4) {
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
// 0xxxxxxx
out += String.fromCharCode(c);
break;
case 12: case 13:
// 110x xxxx 10xx xxxx
char2 = array[i++];
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = array[i++];
char3 = array[i++];
out += String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}

return out;
}

关于reactjs - 读取文本文件 aws-amplify s3 从预签名 URL 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com