Загрузка файлов с Firebase SDK - PullRequest
0 голосов
/ 14 декабря 2018

EDIT –– Это часть сценария, который выполняется в Digital Ocean и анализирует файлы PDF.Поэтому я использую Firebase Admin SDK доступ, потому что я запускаю это на сервере.В конце дня я хотел бы иметь возможность загружать файлы в свое онлайн-хранилище, в основном загружая файлы на общедоступный URL-адрес, который я затем могу отправить соответствующим пользователям.

I 'я вручную загрузил файл в мое хранилище здесь: https://firebasestorage.googleapis.com/v0/b/federal-register.appspot.com/o/nj.jpg?alt=media&token=891a1574-7cc0-44c1-a954-6dcc0844f796

Я хотел бы иметь возможность программно загружать файлы со своего сервера в раздел хранилища Firebase и делать их общедоступными (например, этот jpeg).


ОРИГИНАЛЬНЫЙ ВОПРОС –––

Я пытаюсь загрузить файлы (файлы PDF) в свое хранилище firebase с помощью Node.js, используя Firebase Admin SDK.Я уже успешно использую базу данных с Admin SDK, но немного сбит с толку битом Storage ...

Вот как я сейчас сконфигурировал мой Admin SDK:

const admin = require("firebase-admin");
const serviceAccount = require("../keys/admin.key.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://federal-register.firebaseio.com",
  storageBucket: "federal-register.appspot.com/"
});

const bucket = admin.storage().bucket();

Если я выйду из консоли на консоль, я получу сложный объект со всеми видами информации списка управления доступом:

Bucket {
  name: 'federal-register.appspot.com/',
  storage: Storage {},
  userProject: undefined,
  acl:
   Acl {
     owners:
      { addAllAuthenticatedUsers: [Function],
        deleteAllAuthenticatedUsers: [Function],
        addAllUsers: [Function],
        deleteAllUsers: [Function],
        addDomain: [Function],
        deleteDomain: [Function],
        addGroup: [Function],
        deleteGroup: [Function],
        addProject: [Function],
        deleteProject: [Function],
        addUser: [Function],
        deleteUser: [Function] },
     readers:
      { addAllAuthenticatedUsers: [Function],
        deleteAllAuthenticatedUsers: [Function],
        addAllUsers: [Function],
        deleteAllUsers: [Function],
        addDomain: [Function],
        deleteDomain: [Function],
        addGroup: [Function],
        deleteGroup: [Function],
        addProject: [Function],
        deleteProject: [Function],
        addUser: [Function],
        deleteUser: [Function] },
     writers:
      { addAllAuthenticatedUsers: [Function],
        deleteAllAuthenticatedUsers: [Function],
        addAllUsers: [Function],
        deleteAllUsers: [Function],
        addDomain: [Function],
        deleteDomain: [Function],
        addGroup: [Function],
        deleteGroup: [Function],
        addProject: [Function],
        deleteProject: [Function],
        addUser: [Function],
        deleteUser: [Function] },
     pathPrefix: '/acl',
     request_: [Function: bound wrapper],
     default:
      Acl {
        owners: [Object],
        readers: [Object],
        writers: [Object],
        pathPrefix: '/defaultObjectAcl',
        request_: [Function: bound wrapper] } },
  iam:
   Iam {
     request_: [Function: bound wrapper],
     resourceId_: 'buckets/federal-register.appspot.com/' } }

Я читал, что это в основном «обертывание» функциональности, упомянутой вдокументация g-cloud.По сути, Firebase оборачивает G-облако.Я попытался использовать соответствующую функцию g-cloud (здесь: https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-nodejs) для загрузки моего документа, но безуспешно.

   bucket.upload(filePath);

Однако я получаю сообщение об ошибке: (rejection id: 1): ApiError: Error during request.

Я был привлечен к Firebase из-за его относительной простоты использования, и я бы предпочел не устанавливать и изучать облачную архитектуру Google, если мне не нужно - особенно если Firebase уже оборачиваетсяэто и предоставление мне доступа через Firebase Admin SDK ...

Есть ли способ, которым я могу загружать файлы только с Firebase SDK? Если это невозможно, я правильно впри условии, что мне нужно будет установить модуль Google (npm install --save @ google-cloud / storage) и затем получить доступ к таким методам?

Спасибо.

...