【问题标题】:how to upload base64 data as image to s3 using node js?如何使用节点 js 将 base64 数据作为图像上传到 s3?
【发布时间】:2014-06-27 00:12:00
【问题描述】:

我正在将画布的 base64data 发送到 node.js 脚本。我需要将base64data 作为图像存储到s3bucket。有什么方法可以实现吗?

【问题讨论】:

标签: node.js amazon-s3 base64


【解决方案1】:

您可以使用 AWS putObject 方法发送 base64 数据,如下所示

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./s3_config.json');
var s3Bucket = new AWS.S3( { params: {Bucket: 'myBucket'} } );

var imageBase64Data='Your base64 code '

s3Bucket.putObject(imageBase64Data, function(err, data){
  if (err) { 
    console.log(err);
    console.log('Error uploading data: ', data); 
  } else {
    console.log('succesfully uploaded the image!');
  }
});

【讨论】:

    【解决方案2】:
    1. 将数据 URI 存储在变量中。
    2. 创建函数,将数据 URI(64 位编码字符串)解码为字符串(这里我创建了 dataURItoBlob() 函数),解码后返回字符串。

    3. 将该字符串传递到 S3 上传函数的正文中。

       var myDataUri = "data:image/jpg;base64,JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYW..."
      
       var myFile=dataURItoBlob(myDataUri);
      
       function dataURItoBlob(dataURI) {
           var binary = atob(dataURI.split(',')[1]);
           var array = [];
         for (var i = 0; i < binary.length; i++) {
            array.push(binary.charCodeAt(i));
         }
        return new Blob([new Uint8Array(array)], {
           type: 'image/jpg'
       });
       }
       if (myFile)) {
         results.innerHTML = '';
         var params = {
           Key: fileName+'.jpg',
           ContentType: 'image/jpg',
           Body: myFile
         };
      
       bucket.upload(params, function(err, data) {
            results.innerHTML = err ? 'ERROR!' : 'UPLOADED.: ' + file;
          });
        } else {
       results.innerHTML = 'Nothing to upload.';
      }
      

    【讨论】:

    猜你喜欢
    • 2019-10-05
    • 2014-06-26
    • 1970-01-01
    • 2012-10-04
    • 2013-08-27
    • 2018-07-16
    • 2019-07-30
    • 2014-08-15
    • 2020-09-03
    相关资源
    最近更新 更多