如何使用节点 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 编码的图像并使用 ExpressJS 作为图像发送
如何在sails.js 或通常在服务器端JavaScript 中将图像转换为base64 编码的数据URL?
将 base64 编码图像添加到 Microsoft Word 文档
如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?