我正在构建一个使用Parse.com作为BaaS的Ionic / Cordova应用程序。它使用ngCordova Camera插件来控制设备摄像头。用例是单击按钮,拍照并将其上传到Parse。我一直在研究这个问题一个星期,但仍然无法弄清楚为什么我无法让它工作。
控制器:
.controller('cameraCtrl', function($scope, camera) {
var cameraOptions = {
quality: 75,
destinationType: 0,
encodingType: 0,
targetWidth: 300,
targetHeight: 300,
mediaType: 0,
correctOrientation: true,
saveToPhotoAlbum: true
};
};
$scope.takePicture = function() {
cameraOptions.sourceType = 1;
navigator.camera.getPicture(onSuccess, onFail, cameraOptions);
}
$scope.selectPicture = function() {
cameraOptions.sourceType = 0;
navigator.camera.getPicture(onSuccess, onFail, cameraOptions);
}
function onSuccess(picture) {
File.upload(picture)
.success(function(data) {
// upload finish
});
$scope.$apply(function() {
$scope.preview = 'data:image/jpeg;base64,' + picture;
});
}
function onFail(resp) {
alert('Error: ' + resp);
}
});
服务:
angular.factory('File', function ($http) {
return {
upload: function (photo) {
var json = {
'base64': photo,
'_ContentType': 'image/jpeg'
}
var config = {
method: 'POST',
url: 'https://api.parse.com/1/files/pict.jpg',
data: json,
headers: {
'X-Parse-Application-Id': 'PCm0kDVeThvRcdFuS9lITrmskEhqjbqwFAydL2Lr',
'X-Parse-REST-API-Key': 'FhasGkTl0BLpJuLLJvPB2NFwlccXzVbirktdngXN'
}
};
return $http(config);
}
}
});
HTML:
<button class="button" ng-click="takePicture()">
关于为什么这不起作用的任何想法?有没有更好或更简单的方法来实现这一目标?在某处工作的任何例子?我在一周内尝试了十几种不同的解决方案,但没有发现任何适用于我的用例的解决方案。谢谢!
答案 0 :(得分:0)
提供任何错误消息会有所帮助,但这是我解决问题的方法
var imageFile = new Parse.File("mypic.jpg", {base64: _params.photo});
console.log(imageFile);
// save the parse file
return imageFile.save().then(function () {
// create object to hold caption and file reference
var imageObject = new ImageObject();
// set object properties
imageObject.set("caption", _params.caption);
imageObject.set("picture", imageFile);
// save object to parse backend
return imageObject.save();
}, function (error) {
console.log("Error");
console.log(error);
});
这里有一个完整的项目,显示Parse.com与文件对象的集成。
https://github.com/aaronksaunders/dcww/blob/master/www/js/services.js