img的Firebase存储上载不起作用->索引为0的put中的无效参数:期望的Blob或文件

问题描述 投票:0回答:1

我尝试首次使用Firebase存储。我的目标是将img上传到存储中。

控制台显示此错误:

“ Firebase存储: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!'); });

即使这样,我也想不出如何设置它的功能。

javascript reactjs firebase firebase-storage
1个回答
0
投票

通过快速查看the file input tag上的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} />
© www.soinside.com 2019 - 2024. All rights reserved.