【发布时间】:2020-10-09 22:25:34
【问题描述】:
我创建了一个基于 Canvas 的应用程序,用户可以在其中进行自定义设计并上传到服务器,我想将 blob 对象发送到服务器,然后再次将其更改为 base64 数据并在服务器上创建图像。
首先我尝试通过在客户端代码中创建 base64 图像数据的 blob 来发送它
import b64toBlob from 'b64-to-blob';
postData(_canvasData){
var contentType = 'image/png';
var imgData = _canvasData.replace(/^data:image\/[a-z]+;base64,/, "");
var blob = b64toBlob(imgData, contentType);
axios.post('/facedata/'+imgData)
.then(function(res){
console.log(res)
}).catch(function(err){
console.log(err,"<<<error")
})
}
function dataURItoBlob(dataURI, callback) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab]);
return bb;
};
我的 NodeJS 服务器代码
var blobToBase64 = require('blob-to-base64');
var FileReader = require('filereader')
app.post("/facedata/:canvasData",function(req,res){
//req.params.canvasData returning blob object
//This shows error unable to read object blob
var reader = new FileReader();
reader.addEventListener('load',function(ev){
console.log("dataUrlSize:", ev.target.result.length);
})
reader.readAsDataURL(blob);
//This Shows Error window not found
blobToBase64(blob,function(error,data){
console.log(data,"<base64Data");
})
}
【问题讨论】:
-
如果你看一下blobToBase64的源码(全20行),应该清楚它不会在浏览器之外运行:github.com/tiaanduplessis/blob-to-base64/blob/master/src/…