无法使用node.js&angular将图像blob上传到AWS S3

我无法将我的图片上传到AWS S3

“[InvalidParameterType:Expected params.Body是一个string,Buffer,Stream,Blob或types数组对象]消息:'Expected params.Body是一个string,Buffer,Stream,Blob或types数组对象',代码: 'InvalidParameterType',

背景所以这就是我想要做的:首先,我使用Angular Image Cropper( http://andyshora.com/angular-image-cropper.html )将图像裁剪为可接受的大小。 这给出了一个base64的URI。

然后,我使用dataURItoBlob将URI转换为blob,并尝试上传到AWS S3。

代码如下所示:

angular

$scope.dataURItoBlob= function(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/png'}); } $scope.uploadPic = function() { var base64data = document.getElementById('base64').value; console.log("the data is: "+ base64data); $scope.pic.Body = $scope.dataURItoBlob(base64data); console.log("the blob is: "+ $scope.pic.Body); $http({ method: 'POST', url: '/api/upload/picture', data: $scope.pic }).success(function (data) { //success code }); }; 

节点(后端)

 exports.uploadPicture = function (req, res) { if (!req.body.hasOwnProperty('Key') || !req.body.hasOwnProperty('Body')) { res.statusCode = 400; return res.send('Error 400: Post syntax incorrect.'); } else { var key = req.body.Key; var body = req.body.Body; AWS.config.loadFromPath('./config.json'); var s3 = new AWS.S3(); s3.createBucket({Bucket: 'bucket'}, function() { var params = {Bucket: 'bucket', Key: key, Body: body}; s3.putObject(params, function(err, data) { if (err) { console.log(err); res.status(400).send('Bad Request.'); } else { console.log("Successfully uploaded data to myBucket/myKey"); } }); }); } } 

它失败,因为它期待一个Blob,但它拒绝我发送的Blob ..请帮助!

谢谢!