如何使用节点js将base64数据作为图像上传到s3?

时间:2014-05-09 09:46:10

标签: node.js amazon-s3 base64

我将canvas的base64data发送到node.js脚本。我需要将base64data作为图像存储到s3bucket。有没有办法实现它?

2 个答案:

答案 0 :(得分:0)

  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.';
    }
    

答案 1 :(得分:-3)

您可以使用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!');
  }
});