Ionic 2 - 如何设置文件下载?

时间:2016-12-15 14:25:45

标签: ionic2

情况:

在我的Ionic 2应用程序中,我有一个 Documents 部分,用户应该能够下载文件。

我正在尝试为Ionic 2设置file transfer

代码:

文档组件:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

import { Transfer } from 'ionic-native';

declare var cordova: any;

@Component({
  selector: 'page-documents',
  templateUrl: 'documents.html'
})

export class DocumentsPage {

    constructor(public navCtrl: NavController) {}

    ionViewDidLoad() {

    }

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

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

结果:

在浏览器中:

我收到以下错误消息:FileTransfer is not defined但可能是因为cordova在浏览器中不起作用。

FileTransfer is not defined

在模拟器中:

在模拟器中,下载似乎实际上是成功的。在控制台中我可以看到:donwload complete。但我没有看到开始下载,也没有下载文件的痕迹。

donwload complete

在设备中:

在设备中 - 点击下载后 - 没有任何反应..我没有看到开始下载。在文件管理器中,我看不到该文件。

问题:

如何正确设置Ionic 2的文件下载?

代码中有问题吗?

我是否应该在设备中看到下载?

谢谢!

3 个答案:

答案 0 :(得分:1)

代码似乎没有错。 根据{{​​3}},

  

注意:您不会在设备上使用文件资源管理器查看文档。   使用adb:

adb shell 
run-as 
com.your.app 
cd files ls

cordova.file.dataDirectory保存在root用户的应用程序私人目录中。 如果需要,您可以从入口对象中读取应用程序中的文件。 file transfer docs

如果您希望用户可以公开访问它,请选中Check here for more

如果您想要进步,可以使用api中的onProgress侦听器。

onProgress((event)=>{//do something})

希望这能回答你的问题。

答案 1 :(得分:0)

我通过更改fileTransfer.download(url, cordova.file.dataDirectory + 'filename')

解决了问题

to:

fileTransfer.download(url, cordova.file.externalRootDirectory +{{appName}} + 'filename')

请参阅此链接https://github.com/apache/cordova-plugin-file

中的存储文件的位置

答案 2 :(得分:0)

文件传输插件中有一个错误需要安装,需要在构造函数中创建本地访问成员才需要声明。

第一步1 从框架文档安装插件fileTransfer。

第二步

import { NavController } from 'ionic-angular';
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';

//import { Transfer } from 'ionic-native';

declare var cordova: any;

@Component({
  selector: 'page-documents',
  templateUrl: 'documents.html'
})

export class DocumentsPage {
  constructor(public navCtrl: NavController,private transfer: FileTransfer, private file: File) {
  }
  ionViewDidLoad() {

  }

  downloadFile()
  {
      const fileTransfer: FileTransferObject = this.transfer.create();
      let url = 'http://MY_URL.com/example.txt';

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

现在,编译引擎理解

会有点意思