首页 > 解决方案 > 上传 img 的 Firebase 存储不起作用 -> 索引 0 处的“put”中的参数无效:预期的 Blob 或文件

问题描述

我第一次尝试使用 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!'); });

即使这样,我也不知道如何设置它。

标签: javascriptreactjsfirebasefirebase-storage

解决方案


通过快速检查文件输入标签上的 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} />

推荐阅读