Firebase хранилище загружает сломанное изображение

0

У меня есть обрезанное изображение, используя этот обрезщик. Он возвращает base64 версию обрезанного изображения.

Я пытаюсь преобразовать этот образ base64 в blob или file, чтобы загрузить его в firebase storage используя приведенный ниже код.

var imageBase64 = $scope.cropper.croppedImage.split(',')[1];
var blob = new Blob([imageBase64], {type: 'image/png'});
var file = new File([imageBase64], 'imageFileName2.png', {type: 'image/png'});

когда я пытался распечатать file он создал объект acutal File который выглядит так.

{
    lastModified:1471604365544,
    lastModifiedDate:"Fri Aug 19 2016 18:59:25 GMT+0800 (PHT)",
    name:"imageFileName2.png",
    size:228808,
    type:"image/png",
    webkitRelativePath:""
}

File загружается успешно, но результат не работает. Предварительный просмотр на панели управления firebase storage firebase выглядит так (он никогда не останавливает загрузку, и когда я пытался его загрузить, у меня получилось сломанное изображение):

Изображение 174551

Чтобы доказать, что мой образ base64 не сломан, вот base64 pic моей кошки Акаши, вы можете просмотреть ее в этом средстве просмотра base64.

Теги:
firebase
image
firebase-storage

1 ответ

0

В 3.3.0 JS-клиенте вы можете просто загрузить строку base64 (docs)!

var imageBase64 = $scope.cropper.croppedImage.split(',')[1];
ref.putString(imageBase64, 'base64').then(function(snapshot) {
  console.log('Uploaded a base64 string!');
});

API-интерфейсы Blob и File оба берут UInt8Array, в котором нет base64 строки, поэтому вы в основном создавали массив, содержащий один элемент, который был base64, которая была недействительной blob. Используйте вышеуказанную загрузку для решения проблемы.

  • 0
    как мы можем сделать это с типом BLOB-объектов, например, var imageBlob = new Blob ([new Uint8Array ([success])], {type: "image / jpeg"});
  • 0
    @Ozi, см. Документы: firebase.google.com/docs/storage/web/… , используйте ref.put(imageBlob) .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню