如何使用Ionic 2将文件下载到公共目录?

时间:2016-12-21 11:43:13

标签: ionic-framework

情况

在我的Ionic 2应用程序中有一个Documents部分。

我需要让用户下载文件。这意味着实际上可以在手机的存储空间中使用它们,以便用户可以打开它们或做任何他想做的事情。

代码中似乎没有错误 - 但它并没有将文档保存在公共文件夹中。

我在Android设备和模拟器上测试过它。在这两种情况下,我都找不到下载的文件。

代码

downloadFile()
{
    const fileTransfer = new Transfer();
    let url = 'http://www.example.com/example.txt';

    fileTransfer.download(url, cordova.file.externalDataDirectory + 'example.txt').then((entry) => 
    {
        console.log('file object');
        console.log(entry);
    }, (error) => {
        // handle error
    });
}

THE CONSOLE

这是模拟器控制台中的日志:

enter image description here

文档

正如您所看到的,我正在使用cordova.file.externalDataDirectory,它应该将文件保存在公用文件夹中。

正如您从documentation

中看到的那样
  

cordova.file.externalDataDirectory - 在哪里放置特定于应用的数据   外部存储上的文件。 (机器人)

问题

我不知道..我可能遗漏了一些东西..你知道如何从Ionic 2 app下载文件到公共存储中吗?

1 个答案:

答案 0 :(得分:3)

使用cordova.file.externalRootDirectory并确保config.xml中root的值为AndroidExtraFilesystems

<preference name="AndroidExtraFilesystems" value="root" />

例如,您可以添加Download/

...
    var pathFile= cordova.file.externalDataDirectory + 'Download/';
    fileTransfer.download(url, pathFile + 'example.txt')
                .then((entry) => {
...

如果'file:///storage/emulated/0/'为空,您可以使用cordova.file.externalRootDirectory