Функции Firebase получают URL для загрузки (не должен истекать и не должен быть публичным) - PullRequest
1 голос
/ 07 июня 2019

Я пытался получить URL для загрузки за последние 2 дня.Я много искал, чтобы получить правильный ответ, но я получил все более старый и неясный ответ.Я не нахожу более новых / совершенных ответов, поэтому я публикую этот вопрос здесь.

Я загружаю изображение base64 в хранилище firebase через admin-SDK через функции firebase.Ниже приведен код, который я использую для загрузки своего base64 в хранилище Firebase.

base64 = "mybase64imagestring";

let bufferStream = new stream.PassThrough();
bufferStream.end(new Buffer.from(base64, 'base64'));

// Retrieve default storage bucket
let bucket = admin.storage().bucket();

// Create a reference to the new image file
let file = bucket.file(`/jk_${dish.createdAt}.jpg`);

bufferStream.pipe(file.createWriteStream({
    metadata: {
      contentType: 'image/jpeg'
    }
  }))
  .on('error', error => {
    reject(`Error while uploading picture ${JSON.stringify(error)}`);
  })
  .on('finish', () => {
    // The file upload is complete and i want to get download URL(which is not public and should not expire) here.

  });

Я попробовал метод "getSignedUrl", чтобы получить URL загрузки, как указано здесь , но я нашел в комментарияха также на некоторых других веб-сайтах, срок действия ссылки на которые getSignedUrl() истекает через неделю.Я хочу постоянную ссылку, срок действия которой не истекает как минимум месяц.Я нашел где-то, что я могу использовать общедоступную ссылку, срок действия которой не истекает, но я не нахожу способ найти ее.Кроме того, я не хочу идти на компромисс с безопасностью, поэтому я не хочу хранить общедоступную ссылку.

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

Кто-нибудь может помочь мне решить эту проблему?

...