cordova中本地文件的位置

时间:2017-04-13 15:13:38

标签: cordova ionic-framework cordova-plugins file-transfer

我正在使用一个接受绝对路径作为参数的视频播放器。如果我将视频放在www文件夹中,请使用以下代码:

var path = cordova.file.applicationDirectory + 'www/myvideo.mp4';
GoogleVRPlayer.playVideo(path);

视频开始播放。日志告诉我视频在:

file:///var/containers/Bundle/Application/F4D23EDE-...-...-...-.../appname.app/www/myvideo.mp4

但是,我不希望我的视频在应用程序中“烘焙”:我希望用户先下载它。要下载,我使用cordova-plugin-file-transfer

download()
    {
        this.fileTransfer.download(
            this.uri,
            'cdvfile://localhost/persistent/path/to/downloads/',
            function(entry) {
                console.log("download complete: " + entry.toURL());
            },
            function(error) {
                console.log("download error source " + error.source);
                console.log("download error target " + error.target);
                console.log("download error code" + error.code);
            },
            false,
            {
                headers: {
                    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
                }
            }
        );
    }

这也很好用。视频下载,日志告诉我视频存储在

file:///var/mobile/Containers/Data/Application/785BC9AF-...-...-...-.../Documents/path/to/downloads

请注意,“Application”之后的ID对于两个文件都不同。此外,下载文件的URL中不存在appname.app。但视频必须是应用的一部分,因为下载视频后应用尺寸会增加...

如何让插件下载www文件夹中的文件,以便我可以播放?或者,我应该在播放器中使用哪条路径,以便播放在path/to/downloads下载的视频?

更新1:添加了额外信息

更新2:

我已将第一条路径更改为

cordova.file.documentsDirectory + 'path/to/downloads/myvideo.mp4';

控制台告诉我视频存储在: file:///var/mobile/Containers/Data/Application/A9B73639-...-...-...-.../Documents/path/to/downloads

它正在尝试播放的视频是: file:///var/mobile/Containers/Data/Application/A9B73639-...-...-...-.../Documents/path/to/downloads/myvideo.mp4

但是,播放器不播放文件:Failed to load video: The operation could not be completed

1 个答案:

答案 0 :(得分:1)

编辑2:

用户解决了该问题。

这是路径错误。在fileTransfer函数中将下载文件的名称设置为参数更正了问题。

修改

我看到你正在使用VR播放器插件。查看文档,它使用Google的VR播放器作为插件的基础。您是否可以通过填写指南在网络浏览器中播放视频:

https://developers.google.com/vr/concepts/vrview-web

这将确认视频与插件使用的播放器兼容。

原始答案:

如果要存储下载的文件,最好使用Cordova文件插件。

cordova plugin add cordova-plugin-file

将此与文件传输插件结合使用

cordova plugin add cordova-plugin-file-transfer

问题在于,根据文件插件文档,只有在安装了应用程序后才会读取/ www文件夹,因此您无法在那里下载和存储文件。

此处的文档。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/