Cordova file transfer not uploading image


#1

I’m trying to upload an image from my mobile device does not work. Try to upload from an input type file and run without any problem, but not selecting images from the library or taking pictures with the camera up images.

The code then receives 200 a response from my server I also get good response received and that something could be processed. However, the picture that is saved is black, you can not open the file.

$scope.uploadPicture = function() {

var img = document.getElementById('imagen_usuario');
var imageURI = img.src; // Verify server has been entered
server = UrlUpdateFile.url + "/" + imageURI.substr(imageURI.lastIndexOf('/') + 1);
if (server) { // Specify transfer options
    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
    options.mimeType = "image/jpeg";
    options.chunkedMode = false; // Transfer picture to server
    var ft = new FileTransfer();
    ft.upload(imageURI, server, function(r) {
        console.log(r);
    }, function(error) {
        console.log(error);
    }, options);
}

}

However, with this code works.

$scope.uploadPicture = function() {
fileData = document.getElementById("file").files[0];
var data = new FormData();
console.log(fileData);
$.ajax({
    url: UrlUpdateFile.url + "/" + fileData.name,
    type: 'POST',
    data: fileData,
    cache: false,
    dataType: 'json',
    processData: false, // Don't process the files
    contentType: "application/octet-stream", // Set content type to false as jQuery 
    // will tell the server its a query string request
    success: function(data) {
        alert('successful..');
    },
    error: function(data) {
        alert('Some error Occurred!');
    }
});

}

That as a comment is a file input type.

Config camera

$scope.takePicture = function() {

var options = {
    quality: 50,
    targetWidth: 512,
    targetHeight: 512,
    destinationType: Camera.DestinationType.FILE_URI,
    sourceType: Camera.PictureSourceType.CAMERA,
    encodingType: Camera.EncodingType.JPEG,
    correctOrientation: true,
    popoverOptions: CameraPopoverOptions,
    saveToPhotoAlbum: false,
};

$cordovaCamera.getPicture(options).then(function(imageData) {
    $scope.photo = imageData;
    var img = document.getElementById('imagen_usuario');
    img.src = imageData;

}, function(err) {
    // An error occured. Show a message to the user
});

}

#2

If you are using cordova file-transfer plugin version 1.6.0. Remove it and install version 1.5.0. It works for me.