现在,我已经传递了画布数据URI字符串
(数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAgAElEQVR ..... )
到我的hapi(NodeJS)服务器。
我的问题是:
我接下来的步骤是什么?流式传输" /将此数据上传到Amazon S3并在那里创建实际图像?
答案 0 :(得分:0)
在将对象发送到s3之前,必须将base64转换为缓冲区并在发送之后,例如:
var buf = new Buffer(b64string, 'base64');
s3.putObject({/*some params*/, Body: buf}, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
在此之后,您将数据发送到s3,您可以打开图像而无需解码。
祝你好运!答案 1 :(得分:0)
将该字符串传递到 S3上传功能的正文
var myDataUri = "data:application/pdf;base64,JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYW..."
var myFile=dataURItoBlob(myDataUri);
function dataURItoBlob(dataURI) {
console.log('1: ',dataURI);
var binary = atob(dataURI.split(',')[1]);
var array = [];
console.log('2: ',binary.length);
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {
type: 'application/pdf'
});
}
if (myFile)) {
results.innerHTML = '';
var params = {
Key: new Date().getTime() + '.pdf',
ContentType: 'application/pdf',
Body: myFile
};
bucket.upload(params, function(err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.: ' + file;
});
} else {
results.innerHTML = 'Nothing to upload.';
}