使用Cordova Camera拍摄应用内照片并将其上传至Parse.com

时间:2015-07-18 01:50:18

标签: angularjs cordova parse-platform ionic-framework cordova-plugins

我正在构建一个使用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()">

关于为什么这不起作用的任何想法?有没有更好或更简单的方法来实现这一目标?在某处工作的任何例子?我在一周内尝试了十几种不同的解决方案,但没有发现任何适用于我的用例的解决方案。谢谢!

1 个答案:

答案 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