Я пытаюсь загрузить изображение в хранилище firebase, которое должно быть blob или файл, и мне было интересно, как я могу это сделать после использования filereader?
function image(file, idOfImage){
var fr = new FileReader();
var imgCar = document.createElement('img')
imgCar.id = idOfImage
fr.onload = function () {
imgCar.src = fr.result;
}
fr.readAsDataURL(file);
document.body.append(imgCar)
}
// sometime later... I might call uploadImage() if user wants to save this image or other image...
// (I am calling image() a couple of times so multiple images on window)
function uploadImage(idOfImage){
var image = document.getElementById(idOfImage)
storage.ref('...').put(image); // I get error since not blob or file
//storage.ref('...').put(image.src); // I get same error since not blob or file
}
Итак, прежде всего, файл, который вы размещаете в функции изображения, является блобом. Итак, что вам нужно сделать, это сохранить его где-нибудь или просто использовать любую переменную, которую вы разместили в качестве параметра файла. Таким образом вы можете использовать его в uploadImage()
. Например:
// This is for the examples sake, but you need to save the file you give to image() somewhere (e.g. the variable below)
var imageBlob = {};
function image(file, idOfImage) {
imageBlob = file;
var fr = new FileReader();
var imgCar = document.createElement('img');
imgCar.id = idOfImage;
fr.onload = function() {
imgCar.src = fr.result;
}
fr.readAsDataURL(file);
document.body.append(imgCar)
}
// sometime later
function uploadImage() {
storage.ref('...').put(imageBlob); // I get error since not blob or file
}
Если вы загружаете с помощью метода <input type="file">
вы можете просто сделать следующее в function uploadImage
:
function uploadImage() {
// This will get the first uploaded file and upload it to firebase storage
// All files uploaded are actually blobs (it extends the blob object)
storage.ref('...').put(input.files[0]);
}