Reactjs 如何使用react在firebase中保存上载的文件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();

我对Redux firebase是个新手。我想上传文件并将url保存在数据库中。我可以将文件保存到存储器,但无法保存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)
        });

}
与使用设置侦听器的方法不同,您应该使用“行为类似于承诺,并在上载完成时使用其快照数据进行解析”的方法

因此,您应该按如下方式修改代码:

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)
    });    

}