我是React Redux Firebase的新手。我想上传文件并将URL保存在数据库中。我可以将文件保存到存储中,但是无法保存网址。
任何答案将不胜感激!
在按钮上单击我具有以下代码。
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)
});
}
答案 0 :(得分:1)
应该使用on()
方法,该方法“表现得像一个Promise,并在上传完成时解析其快照数据”,而不是使用设置侦听器的then()
方法。
因此,您应该按照以下步骤修改代码:
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)
});
}