Я пытался получить 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()
истекает через неделю.Я хочу постоянную ссылку, срок действия которой не истекает как минимум месяц.Я нашел где-то, что я могу использовать общедоступную ссылку, срок действия которой не истекает, но я не нахожу способ найти ее.Кроме того, я не хочу идти на компромисс с безопасностью, поэтому я не хочу хранить общедоступную ссылку.
После получения этой ссылки я собираюсь сохранить ее в базе данных и из базы данных, я буду получать доступ к изображению черезэта ссылка.Поэтому я ожидаю, что срок действия ссылки не истечет.
Кто-нибудь может помочь мне решить эту проблему?