Reactjs 如何使用react在firebase中保存上载的文件url
我对Redux firebase是个新手。我想上传文件并将url保存在数据库中。我可以将文件保存到存储器,但无法保存url 任何答复都将不胜感激 点击按钮,我有以下代码Reactjs 如何使用react在firebase中保存上载的文件url,reactjs,firebase,google-cloud-storage,firebase-storage,Reactjs,Firebase,Google Cloud Storage,Firebase Storage,我对Redux firebase是个新手。我想上传文件并将url保存在数据库中。我可以将文件保存到存储器,但无法保存url 任何答复都将不胜感激 点击按钮,我有以下代码 handleSubmit = (e) => { e.preventDefault(); const { sp_License } = this.state; const Lfilename = this.state.sp_name + '_' + new Date().getTime();
handleSubmit = (e) => {
e.preventDefault();
const { sp_License } = this.state;
const Lfilename = this.state.sp_name + '_' + new Date().getTime();
const uploadTask = storage.ref('License/' + Lfilename).put(sp_License);
uploadTask.on('state_changed',
(snapshot) => {
//progress
},
(error) => {
//error
},
() => {
uploadTask.snapshot.ref.getDownloadURL().then(
url => this.setState({ License: url })
);
console.log(this.state);
this.props.createDroneSP(this.state)
});
}
与使用设置侦听器的方法不同,您应该使用“行为类似于承诺,并在上载完成时使用其快照数据进行解析”的方法
因此,您应该按如下方式修改代码:
handleSubmit = (e) => {
e.preventDefault();
const { sp_License } = this.state;
const Lfilename = this.state.sp_name + '_' + new Date().getTime();
const uploadTask = storage.ref('License/' + Lfilename).put(sp_License);
uploadTask
.then(uploadTaskSnapshot => {
return uploadTaskSnapshot.ref.getDownloadURL();
})
.then(url => {
this.setState({ License: url });
console.log(this.state);
this.props.createDroneSP(this.state)
});
}