TypeScript - مثالهایی از استفاده از افزونه فایل در Ionic 2
آیا کسی مثالهای کامل دربارهی نحوه استفاده از افزونه Cordova Native File در یک پروژه Ionic 2/Angular 2 دارد؟
من این پلاگین را نصب کردم اما مستندات به نظر من خیلی منطقی نمیآید زیرا نامنظم است و یک مثال کامل که شامل تمام ایمپورتهای لازم باشد را ندارد.
برای مثال، مثال زیر نشان نمیدهد که اشیائی مانند LocalFileSystem یا window از کجا آمدهاند.
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);
برای مثال، من نیاز دارم یک فایل property ایجاد کنم. ابتدا باید بررسی کنم که آیا فایلی در ناحیه ذخیرهسازی سندباکس برنامه وجود دارد یا خیر، اگر وجود نداشت باید آن را ایجاد کنم. سپس باید فایل را باز کنم، دادهها را بنویسم و آن را ذخیره کنم. چگونه میتوانم این کار را انجام دهم؟
پاسخ شماره ۱
آیونیک ۲ با یک بسته افزونه فایل 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
}
);
پاسخ شماره ۲
در اینجا یک مثال با استفاده از 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);
});
}
}
این با آیونیک ۳.۷.۰ روی آیاواس آزمایش شد.
