Firebase Storage загрузка img не работает -> Неверный аргумент в `put` с индексом 0: ожидаемый BLOB или файл - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь использовать Firebase Storage впервые. Моя цель - загрузить img в хранилище.

Консоль показывает эту ошибку:

"Firebase Storage: недопустимый аргумент в put при индексе 0: ожидаемый BLOB или файл". , serverResponse_: null, name_: "FirebaseError"}

 export default function ImgUpload() {
  const [img, setImg] = useState([]);

  console.log('img', img);

  const handleUpload = () => {
    firebase
      .storage()
      .ref()
      .child(`images/${img.name}`)
      .put(img)
      .then(function (snapshot) {
        console.log('what');
      });
  };

  return (
    <div>
      <Input onChange={setImg} type="file" value={img} />
      <Button onClick={e => handleUpload(e)} type="submit">
        Upload
      </Button>
    </div>
  );
}

Я также нашел это в документации:

var file = ... // use the Blob or File API 
ref.put(file).then(function(snapshot) {   
console.log('Uploaded a blob or file!'); });

Я не могу понять, как настроить его для работы даже с этим.

1 Ответ

0 голосов
/ 27 апреля 2020

Из быстрой проверки документации ReactJS на тег ввода файла вы можете получить фактический файл с помощью this.fileInput.current.files[0].

Это значит, что для вас это будет выглядеть примерно так:

let file = this.fileInput.current.files[0];
firebase
  .storage()
  .ref()
  .child(`images/${file.name}`)
  .put(file)

С этим в JSX:

<input type="file" ref={this.fileInput} />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...