Загрузка URL-адреса блоба в хранилище Firebase - PullRequest
0 голосов
/ 29 января 2020

Я использую «response-image-crop» (https://github.com/DominicTobias/react-image-crop) для обрезки изображения и загрузки его в хранилище Firebase. Ответом "response-image-crop" является блоб: URL в моем состоянии. Когда я звоню:

var storageRef = firebase.storage().ref();
        var mountainImagesRef = storageRef.child(
            "images/" + auth.uid + "/avatar.jpg"
        );
        mountainImagesRef.put(file).then(function(snapshot) {...

, я получаю сообщение об ошибке:

Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.

Я знаю, что мне нужно передать блоб или файл, а не URL, но как я могу это исправить?

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете получить BLOB-объект из URL-адреса изображения с помощью запроса на выборку:

async blobFromURL(url) {
 blob = await fetch(this.imageUrl).then(r => r.blob());
 return blob
}
0 голосов
/ 29 января 2020

Я исправил это, отредактировав возвращенное Обещание «response-image-crop». Изменить возврат Обещание на:

return new Promise((resolve, reject) => {
            canvas.toBlob(blob => {
                if (!blob) {
                    //reject(new Error('Canvas is empty'));
                    console.error("Canvas is empty");
                    return;
                }
                blob.name = fileName;
                console.log(blob);
                resolve(blob);
            }, "image/jpeg");
        });

Теперь вы получите возвращенный BLOB-объект, а не URL-адрес BLOB-объекта.

...