我正在使用Cordova 4.2.0 for Android。
让FileTransfer plugin正常工作我遇到了一些麻烦。我想有一个写错误
exception:".myApp\/contentImages\/20150110220101.jpg: open failed: ENOENT (No such file or directory)"
filename 之前已经过测试,但尚不存在:
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);
}
);
这是下载功能:
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);
}
);
}
可能是什么问题?
修改
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;
}
答案 0 :(得分:12)
问题是由先前版本升级Cordova引起的。
未正确识别本地文件的路径:.fullPath
现已过时,应由.toURL()
替换。
答案 1 :(得分:2)
我认为您的问题不在于FileTransfer插件,而在于您尝试检查文件是否存在的方式。
在这里查看:http://www.html5rocks.com/en/tutorials/file/filesystem/您我们将看到访问其父项不存在的文件会引发异常:
在回调中,我们可以使用要创建的文件的名称调用fs.root.getFile()。您可以传递绝对或相对路径,但它必须有效。例如,尝试创建其直接父项不存在的文件是错误的。
我想知道问题是你的文件的父母是否存在。在这种情况下,文件夹.myapp和contentImages。