Cordova App:如何获取文件的实际路径

时间:2015-02-15 08:08:43

标签: javascript cordova ionic-framework

我使用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'

所以我想问一下我需要用来检查文件是否存在的真实路径。

请提供任何建议。

问候。

1 个答案:

答案 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);