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) и затем получить доступ к таким методам?
Спасибо.