Bonjour, comment allezz-vous?

Je travaille sur un projet, et je me retrouve bloquer en ce moment. J'ai un systeme qui permet de recuperer des images dans la gallerie d'android, puis l'afficher et l'uploader sur un serveur PHP si l'utilisateur decide ainsi.

voici mon code

$scope.upload_media_file = function(file_uri, media_type, source){
    alert('A upload');

    //Grab the file name of the photo in the temporary directory
    var currentName = file_uri.replace(/^.*[\\\/]/, '');

    //Creer un nouveau nom pour le fichier
    var date = new Date();
    var new_file_name = '';

    if(media_type === 'PICTURE'){
        var new_file_name =  date.getTime() + '.jpg';
    }
    else if(media_type === 'VIDEO'){
        var new_file_name = date.getTime() + '.mp4';
    }

    //upload_file(nehmiRestApiBasicLink, new_file_name, file_location);
    // Si le fichier est recupere dans la bibliotheque d'android, on en fait un traitement special
    if ($cordovaDevice.getPlatform() == 'Android' && source === 1) {

        alert('Android upload');

        window.FilePath.resolveNativePath(file_uri, function(entry) {
            window.resolveLocalFileSystemURL(entry, success, fail);

                function fail(e) {
                    console.error('Error: ', e);
                }

                function success(fileEntry){
                    var namePath = fileEntry.nativeURL.substr(0, fileEntry.nativeURL.lastIndexOf('/') + 1);

                    $cordovaFile.copyFile(namePath, fileEntry.name, cordova.file.dataDirectory,  new_file_name).then(function(success){
                    var file_location = get_multimedia_url(new_file_name);

                        alert('copie avec success ' + success);

                        //Envoyer l'image ou ;a video sur le serveur
                        upload_file(nehmiRestApiBasicLink, new_file_name, file_location);

                }, function(error){
                    alert('Erreur');
                });
               }
        });
    }
    else{

        var namePath = file_uri.substr(0, file_uri.lastIndexOf('/') + 1);
        // Move the file to permanent storage
        $cordovaFile.moveFile(namePath, currentName, cordova.file.dataDirectory, new_file_name).then(function(success){

            alert('Succes non librairie');
            var file_location = $scope.get_multimedia_url(new_file_name);

               upload_file(nehmiRestApiBasicLink, new_file_name, file_location);

            //$scope.image = new_file_name;
        }, function(error){
            alert('Erreur non libr');
        });
    }
}

L'alert me disant que le fichier est copiée avec success, mais quand j'aille regarder dans le dossier de l'application,il est vide. Quelqu'un peut m'aider a resoudre ce prob s'il vous plait??

8 réponses


Personne pour m'aider???

Salut,

Ca ne serait pas tout simplement un problème de permissions ?
As-tu debug les différentes variables afin de vérifier que ton fichier ne soit pas copié dans le mauvais dossier ou qu'il ne soit pas vide ?

Peut - etre que c'est le cas, mais je teste mon application directement sur mon telephone car mon ordi ne lance jamais l'emulateur :(

Normalement tu peux débug sous Chrome ;)

Heu! J'ai essayé.. Mais chrome ne reconnait pas les dependances incluses avec ngcordova, comme la camera, la gallerie ou autre chose.. tu procede comment pour tester avec?

Je n'ai jamais eu l'occasion de développer une app mobile encore, donc je ne sais pas désolé ^^
Tu devrais faire 2-3 recherches je pense que d'autres ont déjà eu le même problème que toi ;)

Ah! Ok! Bah! J'ai recuperé l'url du dossier daans lequel le fichier est copié. Mais je ne le trouve pas dedans.... Ca deconne je ne sais pourquoi...

le probleme est peut etre dans mes fichiers
J'ai recuperer l'adresse du fichier apres la copie pour l'afficher dans ma vue, elle s'affiche dynamiquement apres chaque chargement:

            window.resolveLocalFileSystemURL(file_uri, function(fileEntry){
                alert('native_url: ' + fileEntry.nativeURL);
                alert('fullPath: ' + fileEntry.fullPath);
                alert('to Url: ' + fileEntry.toURL())

                //Copie du fichier dans le dossier de l'application
                var namePath = fileEntry.nativeURL.substr(0, fileEntry.nativeURL.lastIndexOf('/') + 1);
                alert('Le fichier se trouve dans: ' + namePath);

                var date = new Date();
                var new_file_name = date.getTime() + '.jpg';

                $cordovaFile.copyFile(namePath, fileEntry.name, cordova.file.dataDirectory,  new_file_name).then(function(success){
                    alert('Copie avec success: ' + JSON.stringify(success));

                    $scope.is_media = true;

                    //Recuperation des infos de l'image
                    $scope.multimedia_file = {
                        type: 'PICTURE',
                        //Servira a afficher l'image dans une div
                        uri: success.nativeURL,
                        //..
                        source: source
                    };

                    alert($scope.multimedia_file.uri)

                   upload_file(nehmiRestApiBasicLink, new_file_name, namePath + fileEntry.name);

                }, function(err){
                    alert('Copie avec erreur: ' + JSON.stringify(err));
                })

                //copie des fichiers dans le dossier de l'application
            })