Как сохранить URL загруженного файла в firebase, используя ответ - PullRequest
2 голосов
/ 07 мая 2019

Я новичок в React 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)
        });

}

1 Ответ

1 голос
/ 07 мая 2019

Вместо использования метода on(), который устанавливает прослушиватель, вы должны использовать метод 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)
    });    

}
...