来自 AWS S3 SDK 的“getObject”请求返回一个“data.Body”,例如“Uint8Array (51213) [137, 80 ....”
如何转换此数据以将其显示在 HTML 标记中
<img id='imgTest' .....
s3.getObject({
Bucket: 'mybuket',
Key: "test/myImage.png"
}, function (errtxt, data) {
if (errtxt) {
console.Log("lireImage", "ERR " + errtxt);
} else {
console.log('lecture OK')
let imageTest =document.getElementById('imgTest')
imageTest.src = ????
谢谢你的回答 YC
最佳答案
我不是在寻找图片的 URL,因为如果我想从它的 URL 加载这个图片,这个图片必须声明为“public”,否则会出现 403(禁止)错误消息。
这就是为什么我使用“s3.getObject”加载图像,并使用我的访问 key 声明和验证的“s3”。通过这种方式,我们可以加载声明为私有(private)的图像。
我不知道如何将接收到的数据转换为图像。
在您提供的其中一个链接中,我找到了解决方案。
let imageTest =document.getElementById('imgTest')
s3.getObject({
Bucket: 'myBucket',
Key: "test/myimage.png"
}, function (errtxt, file) {
if (errtxt) {
console.Log("lireFic", "ERR " + errtxt);
} else {
console.log('lecture OK')
imageTest.src = "data:image/png;base64," + encode(file.Body);
}
});
function encode(data)
{
var str = data.reduce(function(a,b){ return a+String.fromCharCode(b) },'');
return btoa(str).replace(/.{76}(?=.)/g,'$&\n');
}
关于javascript - AWS S3 getObject 到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429077/