【问题标题】:AWS S3 getObject to imageAWS S3 getObject 到图像
【发布时间】:2018-07-03 21:18:21
【问题描述】:

来自 AWS S3 开发工具包的“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

【问题讨论】:

    标签: javascript html amazon-s3


    【解决方案1】:

    您需要做的就是检索要显示的图像的网址。

    查看以下答案:

    Amazon S3 Access image by url

    display images fetched from s3

    【讨论】:

      【解决方案2】:

      我不是在寻找图片的 URL,因为如果我想从它的 URL 加载这张图片,这张图片必须声明为“公共”,否则会出现 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');
      }
      

      【讨论】:

        【解决方案3】:

        如果您在尝试访问刚刚上传的图像时遇到访问被拒绝,则需要配置存储桶的策略。

        观看此视频:

        https://www.youtube.com/watch?v=hLY0lQA_c7Q

        它对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-24
          • 2019-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多