Загруженное изображение (base64) выглядит поврежденным в методе firebase putString

Я загружаю изображение (base64) в firebase с помощью метода putString

uploadTask = fireStorage.ref('/your/path/here').child('file_name').putString(snapshot, 'base64', { contentType: 'image/jpg' });

Это действительный контент base64 (так как это огромная строка, поэтому я могу вставить ее сюда. Но я уже проверил ее, декодировав ее в изображение в Интернете), но он начинается примерно так

/9j/4AAQSkZJRgABAQAAkACQAAD/4QCMRXhpZgAATU0AKgAAAAgABQES

Загруженное (в firebase) изображение выглядит пустым, как прямоугольник в 1 пиксель.

Это изображение URL

https://firebasestorage.googleapis.com/v0/b/manage-my-rides-1493889860531.appspot.com/o/lala%2Fchild.jpg?alt=media&token=63c9078a-7124-41a1-9349-6a2f2c6d8379

Код firebase

var uploadedFile = await fireStorage.ref("lala").child("child.jpg").putString(snapshot, 'base64', {
        contentType: 'image/jpg'
    });
var url = await fireStorage.ref("lala").child("child.jpg").getDownloadURL();
    console.info(url);

Попробуйте удалить data:image/jpeg;base64, часть вашей строки, если она есть

Pritish Vaidya 08.04.2018 20:51

@PritishVaidya Его там нет. Обновил свой вопрос.

NarayaN 08.04.2018 20:59
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
1
2
851
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я пробовал настраивать base64 различными методами, но, похоже, это не сработало. Изображение кажется поврежденным во время хранения

Вот быстрый обходной путь

fetch(YOUR_ORIGINAL_BASE_64_STRING)
    .then(res => res.blob())
    .then(blob => 
      fireStorage.ref('/your/path/here').child('file_name').put(blob);
    )

Пример

var url = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg= = "

let storageRef = firebase.storage().ref().child('image');
fetch(url)
    .then(res => res.blob())
    .then(blob =>
        storageRef.put(blob).then(function(snapshot) {
            console.info(snapshot)
            console.info('Uploaded a blob!');
        })
    )

Я не могу вас отблагодарить. Ты обалденный. firebasestorage.googleapis.com/v0/b/…

NarayaN 09.04.2018 05:17

Другие вопросы по теме