Как бы я загрузить изображение после fileReader в Firebase хранилище

1

Я пытаюсь загрузить изображение в хранилище 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
}
Теги:
firebase
firebase-storage

1 ответ

0

Итак, прежде всего, файл, который вы размещаете в функции изображения, является блобом. Итак, что вам нужно сделать, это сохранить его где-нибудь или просто использовать любую переменную, которую вы разместили в качестве параметра файла. Таким образом вы можете использовать его в 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]);
}
  • 0
    Извините, я должен был быть более ясным. Я не хочу всегда загружать изображение (), так как я хочу, чтобы пользователь выбирал изображение для загрузки, поэтому иногда изображения не нужно загружать.
  • 0
    Хорошо, давайте посмотрим, правильно ли я понимаю, пользователь загружает изображение, а затем должен выбрать, загружать его или нет? Верный?
Показать ещё 1 комментарий

Ещё вопросы

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