1

我正在制作一个科尔多瓦应用程序来从服务器下载 mp3 文件然后存储到手机中,然后用户可以在本地播放它。

我下载 mp3 文件的代码如下所示

$scope.downloadFile = function(Filename){
        var fileTransfer = new FileTransfer();
        var uri = encodeURI("http://archive.org/download/Kansas_Joe_Memphis_Minnie-When_Levee_Breaks/Kansas_Joe_and_Memphis_Minnie-When_the_Levee_Breaks.mp3");
        var downloadPath = cordova.file.dataDirectory+'download.mp3';

        fileTransfer.download(
            uri,
            downloadPath,
            function(entry) {
                $scope.savepath = entry.toURL();
                alert("download complete: " + entry.toURL());
            },
            function(error) {
                alert("download error");
            },
            false,
            {
                headers: {
                    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
                }
            }
        );
    }//End DownloadFile

我从服务器下载 mp3 文件并以名称 download.mp3 将其存储在 iPhone 中。当我想播放它时,我使用文件路径cordova.file.dataDirectory+'download.mp3'但出现错误,就像应用程序找不到download.mp3

这是来自 xCode 的日志

Unknown resource 'file:///var/mobile/Containers/Data/Application/F4G316AE-5BB2-3F1A-A65B-A84E3F7152AC/Library/NoCloud/download.mp3'

我想问你们是否有任何方法可以检查正确的文件路径或解决这个问题的任何想法。

问候。

4

1 回答 1

5

您需要从文件路径中去掉“file://”

fileURL = fileURL.replace('file://','');

$scope.media = new Media(fileURL);

$cordovaMedia.play($scope.media);

/*
'file:///var/mobile/Containers/Data/Application/XXXXXXXXX/Library/NoCloud/download.mp3'
--> Unknown resource

'/var/mobile/Containers/Data/Application/XXXXXXXXX/Library/NoCloud/download.mp3'
--> play ok!
*/
于 2015-01-12T12:51:45.240 回答