не удается создать загружаемую ссылку из хранилища firebase

#android #firebase #react-native #firebase-storage

#Android #firebase #react-native #firebase-хранилище

Вопрос:

Я разрабатываю приложение React native. Я загружаю пакет изображений с помощью react-native-image-crop-picker. Используя способ сохранения пути в массиве и одну за другой загрузки изображения. но я не могу создать загружаемую ссылку для загруженных файлов. Я получаю 2 ошибки

1) Не удается прочитать свойство ‘then’ неопределенного
2) при попытке получить загружаемую ссылку он не может найти объект

ниже приведен мой код

             AddProduct = () => {
                this.setState({ loading: true })
                this.setState({ disabled: true })
                //-------------UUIDGenerator-------------

                UUIDGenerator.getRandomUUID().then((productUid) => {
                this.setState({ productUid });
                () => console.log("setted state="   this.state.productUid)
                console.log("Generated UUid "   this.state.productUid)
                });
                //----------------------------------------
                //image upload
                try {

                setTimeout(() => {
                    const fs = RNFetchBlob.fs
                    const uid = "flyers/"   this.state.productUid;
                    const imageRef = firebase.storage().ref(uid).child('abc'   ".jpg") //string "dp1.jpg"
                    let mime = 'image/jpg'

                    if (this.state.imagePath === "") {
                    alert("Select a Flyer")
                    return
                    }
                    //-----------------Checking Inputs-----------
                    if (this.state.title.length < 1) {
                    alert("Enter a Title");
                    return;
                    }

                    if (this.state.description.length < 3) {
                    alert("Enter At least 3 words To describe the product ")
                    return;
                    }
                    if (this.state.storename.length < 1) {
                    alert("Enter a Storename")
                    return;
                    }
                    alert("Uploading Flyer"   this.state.title)
                    //------------------------------------------------
                    this.state.imagePath.forEach((data) => {

                    // coverting to base64
                    new Promise((resolve, reject) => {
                    fs.readFile(data, 'base64')
                    .then((data) => {

                        return Blob.build(data, { type: `${mime};BASE64` })

                    })
                    .then((blob) => { 
                        console.log("blob "  JSON.stringify(blob))
                        //uplaoding Image
                        uploadBlob = blob
                        name =name   1
                        firebase.storage().ref(uid).child(name   ".jpg").put(blob) // ,{ contentType: mime }

                    })
                    .then(() => {
                        //uploadBlob.close()
                        //getting url
                        console.log("1")
                        return firebase.storage().ref(uid).child(name   ".jpg").getDownloadURL()

                    }) 
                    })
                    })
                    .then(() => {
                        //urls = url;
                        console.log('urls='   urls)
                        //================================
                        try {


                        alert("Uploading Flyerss"   this.state.title)

                        //-------------------------------------------

                        //----------Inserting Data to Database--------


                        usersTable = 'flyers/'   this.state.productUid,
                            console.log(usersTable)
                        firebase.database().ref(usersTable).set(
                            {

                            title: this.state.title,
                            description: this.state.description,
                            imageUrls: this.state.imageUrls,
                            storename: this.state.storename,
                            user: asyncValue,
                            longitude: this.state.longitude,
                            latitutde: this.state.latitutde
                            }
                        ).then(
                            console.log("then"),
                            this.title.clear(),
                            this.description.clear(),
                            //this.category.clear(),
                            this.setState({ loading: false }),
                            this.setState({ disabled: false }),
                            this.setState({ title: "" }),
                            this.setState({ storename: "" }),
                            this.setState({ description: "" }),
                            this.setState({ imagePath: "" }),
                            urls = "",
                            alert(this.state.title   " flyer sucessfully uploaded")
                        )
                        //--------------------------------------------

                        }
                        catch (error) {
                        this.setState({ loading: false })
                        this.setState({ disabled: false })
                        console.log(error.toString())
                        alert(error.toString())
                        }
                        //================================



                    })
                }, 3000)
                }

                catch (error) {
                console.log("upload Error = "   error)
                }

            }
  

Комментарии:

1. Возвращает ли fs.ReadFile() обещание?

2. @DougStevenson нет

3. Когда я запрашиваю загружаемый URL-адрес, я получаю эту ошибку Возможное отклонение необработанного обещания (id: 0): FirebaseStorageError { «code_»: «хранилище / объект не найден», «message_»: «Хранилище Firebase: объект»flyers/cff8a6a4-a129-4b07-aa56-f8ed2b8298f6/2.jpg ‘ не существует.», «name_»:»Ошибка FirebaseError», «serverResponse_»: «{ «ошибка»: {«код»: 404, «сообщение»: «Не найдено. Не удалось получить объект »

4. Похоже, ваш код предполагает, что это так, потому что он вызывает then его.

5. @DougStevenson.. Я новичок в программировании… можете ли вы рассказать мне, как это сделать