情况:
在我的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在浏览器中不起作用。
在模拟器中:
在模拟器中,下载似乎实际上是成功的。在控制台中我可以看到:donwload complete
。但我没有看到开始下载,也没有下载文件的痕迹。
在设备中:
在设备中 - 点击下载后 - 没有任何反应..我没有看到开始下载。在文件管理器中,我看不到该文件。
问题:
如何正确设置Ionic 2的文件下载?
代码中有问题吗?
我是否应该在设备中看到下载?
谢谢!
答案 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')
中的存储文件的位置
答案 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
});
}
}
现在,编译引擎理解
会有点意思