镜像的AWS S3 getObject

yva*_*aud 3 html javascript amazon-s3

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 = ????
Run Code Online (Sandbox Code Playgroud)

谢谢您的回答YC

yva*_*aud 6

我不是要查找图像的URL,因为如果要从其URL加载该图像,则必须将该图像声明为“ public”,否则会出现403(禁止)错误消息。

这就是为什么我使用“ s3.getObject”加载图像,并通过访问密钥声明和认证“ s3”的原因。这样,我们可以加载声明为私有的图像。

我不知道该怎么办,就是将接收到的数据转换成图像。

在您给我的链接之一中,我找到了解决方案。

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');
}
Run Code Online (Sandbox Code Playgroud)


Zer*_*odf 0

您所需要做的就是检索要显示的图像的 URL。

请参阅以下答案:

Amazon S3 通过 url 访问图像

显示从 s3 获取的图像