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

Posted

技术标签:

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

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

【问题讨论】:

可能这就是你要找的。 [uploading-base64-encoded-image-to-s3][1] [1]: ***.com/questions/7511321/… 【参考方案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】:
    将数据 URI 存储在变量中。

    创建函数,将数据 URI(64 位编码字符串)解码为字符串(这里我创建了 dataURItoBlob() 函数),解码后返回字符串。

    将该字符串传递到 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.';
    
    

【讨论】:

@lusha li,检查新的blob检查链接developer.mozilla.org/en-US/docs/Web/API/Blob/Blob

以上是关于如何使用节点 js 将 base64 数据作为图像上传到 s3?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振将 Base64 字符串解码为图像文件

获取 Base64 编码的图像并使用 ExpressJS 作为图像发送

如何在sails.js 或通常在服务器端JavaScript 中将图像转换为base64 编码的数据URL?

将 base64 编码图像添加到 Microsoft Word 文档

如何在 React Js 中显示 base64 图像?

如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?