我尝试首次使用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!'); });
即使这样,我也想不出如何设置它的功能。
通过快速查看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} />