Я пытаюсь разрешить пользователям загружать изображения из хранилища firebase. У каждого изображения есть URL-адрес загрузки, сохраненный в коллекции firestore, поэтому при создании изображений каждому присваивается правильный URL-адрес. Нравиться:
<img src="https://firebasestorage.googleapis.com/v0/b/odyssey-
f90f0.appspot.com/o/images%2F2539888b-eabd-84b9-9c72-b0f1ee9b0af6?alt=media&token=acb8655f-fd8f-
4d94-9ba0-dc29c3f3c399">
Что отлично работает для фактического получения и отображения изображения. Однако, когда я пытаюсь разрешить пользователям загружать его по другой ссылке с атрибутом загрузки, например:
<a href="#" download="https://firebasestorage.googleapis.com/v0/b/odyssey-
f90f0.appspot.com/o/images%2F2539888b-eabd-84b9-9c72-b0f1ee9b0af6?
alt=media&token=acb8655f-fd8f-4d94-9ba0-dc29c3f3c399">Download</a>
Он просто загружает какой-то странный формат файла, который нельзя просмотреть:
Первоначально я думал, что это проблема CORS, поэтому следовал документации по firebase https://firebase.google.com/docs/storage/web/download-files и загрузил инструмент командной строки gsutil, затем настройте cors.json и установите подтверждение CORS следующим образом:
[
{
"origin": ["*"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
Оттуда он все еще не работал, поэтому я установил чтение в корзине изображений облака Google как общедоступный и убедился, что мои правила хранения Firebase также установлены для чтения для всех. По-прежнему без изменений.
На данный момент я действительно не знаю, что делать. Может быть, есть какой-то способ использовать этот код (документация firebase о том, как загрузить файл), чтобы получить фактические данные файла и установить его как атрибут загрузки, а не URL-адрес или что-то в этом роде, но я не знаю, как это сделать что.
function downloadImage(imageURL) {
// Create a reference to the file we want to download
var httpsReference = storage.refFromURL(imageURL);
// Get the download URL
httpsReference.getDownloadURL()
.then((url) => {
// download image directly via url
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = (event) => {
var blob = xhr.response;
};
xhr.open('GET', url);
xhr.send();
});
Кроме того, как ни странно, если я щелкаю правой кнопкой мыши изображение, отображаемое на веб-сайте, сохраняю как - и затем вручную устанавливаю расширение файла .jpg или .png или что-то, что оно загружает и работает. Однако, когда я добавляю это в код, он просто загружает файл, формат которого не поддерживается.
Любая помощь или даже указатели на ресурсы, которые я пропустил, были бы очень признательны.