Рубрики
Без рубрики

IONIC & FireBase Image Загрузить пример

Простая демонстрация загрузки файла в хранение Firebase из приложения Ionic Framework.

Автор оригинала: Aaron Saunders.

У всех есть один

FireBase Realtime, облако огненная огня и хранение

Простая демонстрация загрузки файла в хранение Firebase из приложения Ionic Framework. Мы не загружаем строку Base64, мы загружаем BLOB в хранилище.

Хранение отличается от базы данных в реальном времени и новее FireBase Cloud Firestore.

FireBase предлагает два облачных, доступных клиента, доступные клиентские базы данных, которые поддерживают синхронизацию данных в реальном времени:

База данных в реальном времени Оригинальная база данных Firebase. Это эффективное решение для мобильных приложений для мобильных приложений, которые требуют синхронизации состояний в реальном времени.

Облако Firestore Новая флагманская база данных Firebase для разработки мобильного приложения. Он улучшает успехи базы данных Realtime с новой, более интуитивной моделью данных. Облако FireStore также имеет более богатые, быстрее запросы и масштабы лучше, чем база данных Realtime.

Выберите базу данных: облачный огневой или база данных в реальном времени | Firebase Если вам удобно с продуктом в бета-версии, используйте Cloud Firestore для ваших новых проектов. Облако Firestore предлагает … _firebase.google.com

Загрузить файл по книгам

Процесс для загрузки файла довольно проходит вперед и объясняется намного лучше в документации Firebase; Там нет волшебных вовлеченных.

Смотрите код:

Aaronksaunders/Ionic4-Firebase-Storage _File Загрузить из приложения Ionic V4 в хранилище облака Firebase – Aaronksaunders/Ionic4-firebase-storage_github.com

uploadToFirebase(_imageBlobInfo) {
    console.log("uploadToFirebase");
    return new Promise((resolve, reject) => {
      let fileRef = firebase.storage()
                        .ref("images/" + _imageBlobInfo.fileName);

let uploadTask = fileRef.put(_imageBlobInfo.imgBlob);

uploadTask.on(
        "state_changed",
        (_snap: any) => {
          console.log(
            "progess " +
              (_snap.bytesTransferred / _snap.totalBytes) * 100
          );
        },
        _error => {
          console.log(_error);
          reject(_error);
        },
        () => {
          // completion...
          resolve(uploadTask.snapshot);
        }
      );
    });
  }

Загрузить файлы в Интернете | Firebase _Note: Измените ваши правила безопасности FireBase для хранения облачного хранилища, чтобы обеспечить неавтоматический доступ. Поскольку Google по умолчанию … _firebase.google.com

Магия преобразования изображения из камеры в Blob для загрузки

Этот код камеры для использования плагина Ionic-Nature Camera скопирован непосредственно из Ионическая ночная документация

const options: CameraOptions = {
  quality: 80,
  destinationType: this.camera.DestinationType.FILE_URI,
  encodingType: this.camera.EncodingType.JPEG,
  mediaType: this.camera.MediaType.PICTURE
};

let cameraInfo = await this.camera.getPicture(options);

Обязательно включите Cordova-файл плагин и Cordova-камера плагин Отказ File-Plugin имеет решающее значение для преобразования пути в файл правильно, чтобы он мог быть преобразован в BLOB для загрузки

// FILE STUFF
  makeFileIntoBlob(_imagePath) {
    // INSTALL PLUGIN - cordova plugin add cordova-plugin-file
    return new Promise((resolve, reject) => {
      let fileName = "";
      this.file
        .resolveLocalFilesystemUrl(_imagePath)
        .then(fileEntry => {
          let { name, nativeURL } = fileEntry;

// get the path..
          let path = nativeURL
                      .substring(0, nativeURL.lastIndexOf("/"));

fileName = name;

// we are provided the name, so now read the file 
          // into a buffer
          return this.file.readAsArrayBuffer(path, name);
        })
        .then(buffer => {
          // get the buffer and make a blob to be saved
          let imgBlob = new Blob([buffer], {
            type: "image/jpeg"
          });
          
          // pass back blob and the name of the file for saving
          // into fire base
          resolve({
            fileName,
            imgBlob
          });
        })
        .catch(e => reject(e));
    });
  }

Вещи, чтобы заметить в коде

Используйте бета-версии @ Ionic/родной Модули, и вам нужно убедиться, что вы используете путь « /NGX » при импорте библиотек.

"@ionic-native/camera": "^5.0.0-beta.15",
  "@ionic-native/core": "^5.0.0-beta.17",
  "@ionic-native/file": "5.0.0-beta.15",
  "@ionic-native/splash-screen": "5.0.0-beta.15",
  "@ionic-native/status-bar": "5.0.0-beta.15",

// notice the path for the import ends in ngx
import { Camera, CameraOptions } from "@ionic-native/camera/ngx";
import { File } from "@ionic-native/file/ngx";

Вы должны сделать то же самое, когда вы импортируете модуль в app.module.ts.

import { Camera } from '@ionic-native/camera/ngx';
import { File } from '@ionic-native/file/ngx';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    File,
    Camera,
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Полный исходный код к примеру:

https://github.com/aaronksaunders/ionic4-firebase-storage