Take in-app photo with Cordova Camera and upload it to Parse.com

I'm building an Ionic/Cordova app which uses Parse.com as a BaaS. It uses the ngCordova Camera plugin to control the device camera. The use-case is click a button, take a picture and have it upload to Parse. I've been researching the problem for a week now and still can't figure out why I can't get it to work.

The controller:

.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);
    }

});

The service:

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);
    }
}
});

The HTML:

<button class="button" ng-click="takePicture()">

Any ideas as to why this doesn't work? Is there a better or more simple way to accomplish this? Any examples of this working somewhere? I've tried a dozen different solutions over the week and haven't found anything that works for my use-case. Thanks!

It would be helpful is you provided any error messages, but here is how I have solved the issue

        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);
        });

There is a complete project here showing Parse.com integration with the File Object.

https://github.com/aaronksaunders/dcww/blob/master/www/js/services.js