2016-03-18 5 views
2

Je souhaite lire le contenu d'un fichier PDF stocké dans iCloud.Comment puis-je lire un fichier d'iCloud dans un appareil iOS avec cordova?

  1. Je prends le fichier avec le plug-in FilePicker Phonegap iOS (https://github.com/jcesarmobile/FilePicker-Phonegap-iOS-Plugin). Le plugin me donne le chemin temporaire où le fichier est copié.

  2. Je veux le lire avec le plugin de fichier Cordova (https://github.com/apache/cordova-plugin-file) mais j'ai fait quelque chose de mal et le journal me donne toujours une erreur.

Voici le code:

$scope.successCallback = function (path) { 
    var fileName = path.substr(path.lastIndexOf('/') + 1); 
    var fileDir = path.substr(0,path.lastIndexOf('/') + 1) 
    console.log("FilePath: " + path); 

    $cordovaFile.readAsDataURL(fileDir, fileName) 
     .then(function (data) { 
      var index = data.indexOf("base64,"); 
      if(index > 0) 
      { 
       data = data.substr(index+7); 
      } 
      console.log("Data OK=" + data); 
     }, function (error) { 
      console.log("Error reading file: " + JSON.stringify(error)); 
     });     
} 
window.FilePicker.pickFile($scope.successCallback, $scope.errorCallback); 

Et c'est la sortie:

$FilePath: /private/var/mobile/Containers/Data/Application/22E33EF4-832B-4911-92A6-312927C42A7C/tmp/DocumentPickerIncoming/file.pdf 
$Error reading file: {"code":5,"message":"ENCODING_ERR"} 

Qu'est-ce que je fais mal?

Répondre

4

J'ai réalisé que dans le chemin d'accès était un dossier "tmp".

Selon cela, j'ai changé le « filedir » afin d'égaler les propriétés cordova.file carte des chemins physiques sur un véritable dispositif qui est mentionné dans le iOS Mise en page du système de fichiers de la documentation de cordova- plugin-fichier.

Maintenant, il fonctionne :)

Voici le code final:

$scope.successCallback = function (path) { 
var fileName = path.substr(path.lastIndexOf('/') + 1); 
var fileDir = cordova.file.tempDirectory + "DocumentPickerIncoming/"; 

console.log("FilePath: " + path); 

$cordovaFile.readAsDataURL(fileDir, fileName) 
    .then(function (data) { 
     var index = data.indexOf("base64,"); 
     if(index > 0) 
     { 
      data = data.substr(index+7); 
     } 
     console.log("Data OK=" + data); 
     }, function (error) { 
      console.log("Error reading file: " + JSON.stringify(error)); 
     });    
} 
window.FilePicker.pickFile($scope.successCallback, $scope.errorCallback);