Ionic 4: Как сохранить изображения на устройстве для автономного режима, который поступает из хранилища Firebase - PullRequest
1 голос
/ 24 апреля 2019

Я использую родной плагин SQLite для хранения текстового содержимого, но мне нужно сделать это и с изображениями! (Для режима OFFLINE )

Преобразование изображений в строку base64 не сработало с angular / ionic 4, поэтому мой вопрос:

Как загрузить изображения с помощью плагина Native для передачи файлов, предоставляемого ionic / Cordova, из URL-адресов изображений, полученных из Firebase

Я прочитал документацию, но она проста и не дает много!

код, предоставляемый DOCS: ( Я не понимаю file.pdf в методе загрузки! Изображения могут иметь любое расширение, например jpg / png ..etc )

download() {
  const url = 'http://www.example.com/file.pdf';
  fileTransfer.download(url, this.file.dataDirectory + 'file.pdf').then((entry) => {
    console.log('download complete: ' + entry.toURL());
  }, (error) => {
    // handle error
  });
}

Ответы [ 4 ]

1 голос
/ 25 апреля 2019

file.pdf при методе загрузки не является проблемой, поскольку вы можете получить полное имя документа / изображения с расширением из ответа API.

Например,

for (let i = 0; i < res.data.length; i++) { 
     let fileName = res.data[i].name;
     let url = 'http://www.example.com/' + res.data[i].name;
     const _fileTransfer: FileTransferObject = this._fileTransfer.create();
     _fileTransfer.download(url, this._file.dataDirectory + fileName).then((entry) => {
         console.log('download complete: ' + entry.toURL());
     }, (error) => {
         console.log(error);
     });
}

Затем вы можете показать изображения, используя normalizeURL , для которого задана строка, представляющая URL, возвращает путь URL после удаления завершающих слешей..

import { normalizeURL } from 'ionic-angular';

{'filePath': normalizeURL(result[i].fileName)

<img src="{{filePath}}">
0 голосов
/ 24 апреля 2019

Firebase имеет классные автономные возможности.Попробуйте запросить необходимые данные и используйте их.

В противном случае используйте этот плагин .

0 голосов
/ 25 апреля 2019

Спасибо, что ответили, но я понял!

Я сохранил свои изображения на телефоне, затем преобразовал их в изображение base64 с помощью плагина Cordova, для которого вы можете найти здесь , затем я добавил изображение base64 в свое хранилище с текстовым содержимым.

0 голосов
/ 24 апреля 2019

Вы можете использовать LocalStorage, больше информации здесь: https://ionicframework.com/docs/building/storage

Пример, который я использовал несколько недель назад для хранения изображений.

 if (this.platform.is('ios')) {
      this.fileName = 'Image';
       this.filePath = this.file.documentsDirectory.replace(/file:\/\//g, '') + this.fileName;

    } else if (this.platform.is('android')) {
      this.fileName = 'Image';
        this.filePath = this.file.externalDataDirectory.replace(/file:\/\//g, '') + this.fileName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...