Cordova est le transfert de fichiers d'Erreur d'Écriture (Code 1)
Je suis en utilisant Cordova 4.2.0 pour Android.
J'ai quelques problèmes pour se faire transfert de fichiers plugin fonctionner correctement. Je suppose qu'il y a une erreur d'écriture
exception:".myApp\/contentImages\/20150110220101.jpg: open failed: ENOENT (No such file or directory)"
nom de fichier a été préalablement testé et n'existe pas encore:
rootFS.getFile('.myApp/contentImages/'+file,{create:false},
function(){
console.log(file+' already exists');
},
function(error){
console.log(file+" does not exist locally");
console.log("Error #"+error.code);
download(file);
}
);
Et c'est ici la fonction de téléchargement:
function download (filename){
var localPath = rootFS.fullPath+'/.myApp/contentImages/'+filename;
var fileTransfer = new FileTransfer();
fileTransfer.download(
encodeURI('http://distantApp/contentImages/'+filename), //This file exists
localPath,
function(entry) {
console.log("download complete: " + entry.fullPath);
},
function (error) {
console.log('download error: ' + error.code + ": "+error.exception+" ; source " + error.source+" ; target " + error.target);
}
);
}
Quel pourrait être le problème?
MODIFIER
Code pour rootFS
function onDeviceReady(){
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, function(){
console.log("error requesting LocalFileSystem");
});
}
function gotFS(fileSystem) {
console.log("got filesystem: "+fileSystem.name); //displays "persistent"
console.log(fileSystem.root.fullPath); //displays "/"
window.rootFS = fileSystem.root;
}
Avez-vous essayé d'imprimer le localPath lorsque vous l'utilisez? Il devrait être "cdvfile://localhost/persistante/chemin/vers/downloads/" et que le chemin d'accès doit être accessible en écriture. Vous pouvez vérifier les chemins d'accès en écriture à partir de Fichier plugin.
Je pense que c'est une bonne idée; j'obtiens ceci :
Il semble que la mise à niveau de Cordova implicite pour remplacer
votre chemin semble androidish
Je pense que c'est une bonne idée; j'obtiens ceci :
//.myApp/contentImages/image.jpg
. J'ai donc creusé retour à rootFS
et j'ai édité la question.Il semble que la mise à niveau de Cordova implicite pour remplacer
.fullPath
par .toURL()
. Maintenant, je reçois des file:///storage/emulated/0//.myApp/contentImages/image.jpg
.votre chemin semble androidish
OriginalL'auteur Yako | 2015-01-24
Vous devez vous connecter pour publier un commentaire.
Le problème a été causé par une mise à niveau de Cordoue à partir d'une version précédente.
Le chemin d'accès des fichiers locaux n'a pas été correctement identifié:
.fullPath
est maintenant obsolète et doit être remplacé par.toURL()
.Grand vous avez sauvé mon temps..
OriginalL'auteur Yako
Je pense que votre problème n'est pas avec le transfert de fichiers du plugin, mais la façon dont vous essayez de vérifier si le fichier existe.
À regarder ici: http://www.html5rocks.com/en/tutorials/file/filesystem/ vous, nous allons voir que l'accès à un fichier qui son immédiatement parent n'existe pas de soulever une exception:
Je me demande si le problème est que les parents de votre fichier n'existe pas. Dans ce cas, les dossiers .myapp et contentImages.
contentImages
répertoire, et il est bien re-créé. Mais vous pourriez avoir raison, que je n'ai pas de pâte de la présente partie du code où le répertoire est créé s'il n'existe pas, et qui conduit à ladownload()
fonction.OriginalL'auteur nespapu