typescript - Exempel på användning av Ionic 2-filplugin


Har någon kompletta exempel på hur man använder Cordova Native File Plugin i ett Ionic 2/Angular 2-projekt?

Jag installerade detta plugin men dokumentationen verkar inte göra mycket mening för mig på grund av att den är fragmenterad och saknar ett komplett exempel, inklusive alla nödvändiga importeringar.

Till exempel visar följande exempel inte var objekt som LocalFileSystem eller window kommer ifrån.

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);

Till exempel, jag behöver skapa en egenskapsfil. Först måste jag kontrollera om en fil finns i appens sandlåda för lagringsområdet, om den inte finns måste jag skapa den. Sedan måste jag öppna filen, skriva data och spara den. Hur kan jag göra det?

Svar #1

Ionic 2 levereras med ett Cordova-filplugin-wrapper: http://ionicframework.com/docs/v2/native/file/.

De nödvändiga filsystemvägarna (t.ex. cordova.file.applicationDirectory) kan du hitta här i dokumentationen för den ursprungliga pluginen: https://github.com/apache/cordova-plugin-file#where-to-store-files. Observera att inte alla plattformar stöder samma lagringsvägar.

Jag lyckades till och med bygga en filbläddrare med det. Använd det på följande sätt:

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
  }
);

Svar #2

Här är ett exempel som använder IonicNative för en app jag arbetar med där jag vill skicka ett e-postmeddelande med en csv-fil som bilaga.

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);
     });

 }
}

Detta testades med Ionic 3.7.0 på IOS.

Relaterade artiklar