Ionic 2文件插件使用示例

Nat*_*ael 19 file typescript cordova-plugins ionic2 angular

有没有人有关于如何在Ionic 2/Angular 2项目中使用Cordova Native File Plugin的完整示例?

我安装了这个插件,但文档似乎对我来说没有多大意义,因为它是碎片化的,缺乏一个完整的例子,包括所有需要的导入.

例如,以下示例不显示LocalFileSystem或窗口等对象的来源.

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {

    console.log('file system open: ' + fs.name);
    fs.root.getFile("newPersistentFile.txt", { create: true, exclusive: false }, function (fileEntry) {

        console.log("fileEntry is file?" + fileEntry.isFile.toString());
        // fileEntry.name == 'someFile.txt'
        // fileEntry.fullPath == '/someFile.txt'
        writeFile(fileEntry, null);

    }, onErrorCreateFile);

}, onErrorLoadFs);
Run Code Online (Sandbox Code Playgroud)

例如,我需要创建一个属性文件.首先,我需要检查应用程序沙箱存储区域中是否存在文件,如果不存在,我必须创建它.然后我必须打开文件写入数据并保存.我怎么能这样做?

tyf*_*ler 13

Ionic 2附带一个Cordova文件插件包装:http: //ionicframework.com/docs/v2/native/file/.

cordova.file.applicationDirectory您可以在原始插件的文档中找到必要的文件系统路径(例如):https: //github.com/apache/cordova-plugin-file#where-to-store-files.请注意,并非所有平台都支持相同的存储路径.

我甚至设法用它构建一个文件浏览器.像这样使用它:

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

...

File.listDir(cordova.file.applicationDirectory, 'mySubFolder/mySubSubFolder').then(
  (files) => {
    // do something
  }
).catch(
  (err) => {
    // do something
  }
);
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,你不能在浏览器中测试它,它必须在设备/模拟器上.你也可以在导入之后使用`declare var cordova:any`来安抚编译器. (3认同)

Phi*_*ack 10

这是一个使用IonicNative为我正在处理的应用程序的示例我要发送带有csv文件附件的电子邮件.

import {EmailComposer} from '@ionic-native/email-composer';
import {File} from '@ionic-native/file';

class MyComponent {
 constructor(private emailComposer: EmailComposer, private file: File) {

 }
 testEmail() {
 this.file.writeFile(this.file.dataDirectory, 'test.csv', 'hello,world,', {replace: true})
     .then(() => {      
       let email = {
         to: 'email@email',
         attachments: [
           this.file.dataDirectory + 'test.csv'
         ],

         subject: 'subject',
         body: 'body text...',
         isHtml: true
       };
       this.emailComposer.open(email);

     })
     .catch((err) => {
       console.error(err);
     });

 }
}
Run Code Online (Sandbox Code Playgroud)

在IOS上用离子3.7.0进行了测试.