我使用Cordova制作Android和iOS应用程序,现在我想检查文件中是否已存在文件。
首先我从服务器下载文件并使用下面的代码在本地保存
$scope.downloadFile = function(){
alert(cordova.file.dataDirectory)
var fileTransfer = new FileTransfer();
var uri = encodeURI("http://example.com/files/th/001.mp3");
var downloadPath = cordova.file.dataDirectory+'001.mp3'; // ANDROID
fileTransfer.download(
uri,
downloadPath,
function(entry) {
$scope.savepath = entry.toInternalURL();
alert("download complete: " + entry.toURL());
alert('saved at : '+entry.toInternalURL());
},
function(error) {
alert("download error source " + error.source);
alert("download error target " + error.target);
alert("upload error code" + error.code);
},
false,
{
headers: {
"Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
}
}
);
}//End DownloadFile
我想使用checkIfFileExists(path)
方法
function checkIfFileExists(path){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
//alert('result: '+JSON.stringify(fileSystem.root))
fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist);
}, getFSFail); //of requestFileSystem
}
function fileExists(fileEntry){
alert("File " + fileEntry.fullPath + " exists!");
}
function fileDoesNotExist(){
alert("file does not exist");
}
function getFSFail(evt) {
console.log(evt.target.error.code);
}
我在手机上查了一下,该文件已保存到Android/data/com.myname.myappname/file/001.mp3
但问题是代码总是显示文件不存在每当我使用
这样的路径时cordova.file.dataDirectory+'001.mp3';
或cdvfile://localhost/persistent/files/001.mp3
或'cdvfile://localhost/files/001.mp3'
所以我想问一下我需要用来检查文件是否存在的真实路径。
请提供任何建议。
问候。
答案 0 :(得分:0)
您需要使用或CheckFileExists吗?您可以尝试使用Phonegap的FileReader方法吗?
var reader = new FileReader();
var fileSource = cordova.file.dataDirectory+'001.mp3'
reader.onloadend = function(evt) {
if(evt.target.result == null) {
// Null? You still have a problem: file doesn't exist.
} else {
// Otherwise the file exists.
}
};
//Check if the file exists
reader.readAsDataURL(fileSource);