反应原生无法将图像上传到firebase

Posted

技术标签:

【中文标题】反应原生无法将图像上传到firebase【英文标题】:React native Failed to upload images to firebase 【发布时间】:2021-01-05 19:10:31 【问题描述】:

我正在尝试将图像上传到 Firebase 存储或 Firestore,但出现以下错误:

“code_”:“storage/invalid-argument”,“message_”:“Firebase 存储:put 索引 0 处的无效参数:预期的 Blob 或文件。”,“name_”:“FirebaseError”,“ serverResponse_": null

我该如何解决这个问题?

我知道我必须将图像转换为文件或 blob 格式,

但在这种情况下,我该怎么做呢??

PS:我没有使用 EXPO

下面是我拍摄图像的函数

const handleSelectPicture = useCallback(() => 
    ImagePicker.showImagePicker(
      
        noData: true,
        title: 'Selecione a foto desejada',
        cancelButtonTitle: 'Cancelar',
        takePhotoButtonTitle: 'Usar câmera',
        maxWidth: 800,
        maxHeight: 800,
        chooseFromLibraryButtonTitle: 'Escolher da galeria',
      ,
      response => 
        if (response.didCancel) 
          return;
        

        if (response.error) 
          Alert.alert('Erro ao fazer upload da foto, tente novamente.');
          return;
        

        console.log('image: >>>> ', response.uri);

        setImageURI( uri: response.uri );

        console.log('State uri>>>>', imageURI);
      ,
    );
  , [imageURI]);

以下是我尝试将该图像上传到 Firebase 的方式:

    await firebase
          .auth()
          .createUserWithEmailAndPassword(
            email,
            password,
          )
          .then(async auth => 
            console.log('valueee', auth);

            await db
              .collection('users')
              .doc('userData')
              .set(

                photo: imageURI,
                document: params.fileSelected,
                address: [data],
              );

            firebase
              .storage()
              .ref(`users/$auth.user.uid/profileImage.jpg`)
              .put(imageURI.uri)
              .then(() => 
                setUser(auth);
              );
          )

【问题讨论】:

【参考方案1】:

错误信息:

在索引 0 处放入的参数无效:预期的 Blob 或文件。

告诉您您向put() 传递了一个无效值。如果您希望将 URL 传递给其他要上传的文件,那是行不通的。您只能上传运行代码的机器上本地存在的内容。

如果您想传输另一个 URL 的内容,您将无法使用 Web 客户端 SDK 执行此操作。您必须编写一些后端代码来从 URL 下载内容,然后将其上传到 Cloud Storage。

【讨论】:

我正在尝试上传仅存在于我的模拟器中的图像,不起作用?? 您必须找到一种方法以 API 接受的方式引用该图像。

以上是关于反应原生无法将图像上传到firebase的主要内容,如果未能解决你的问题,请参考以下文章

反应应用程序中的CORS问题,无法上传图像

使用阿波罗客户端上传图像时获取网络请求失败反应原生android

减小图像大小后如何将图像上传到firebase反应本机

将图像从颤振上传到火力基地(没有任何反应)

反应本机图像获取/上传

用图像反应原生 iOS 推送通知