当前位置: 首页 > 知识库问答 >
问题:

React本地Firebase存储上载失败,出现未知错误

霍建章
2023-03-14

我正在使用react-native-firebase与我们的Firebase帐户一起进行身份验证、firestore和存储。尝试将照片上载到存储区失败,出现未知错误。以下是尝试的代码

_pickImage = async () => {
  await this.getCameraRollPermission()
  let result = await ImagePicker.launchImageLibraryAsync({
    allowsEditing: true,
    aspect: [4, 3],
  });

  console.log(result);

  if (!result.cancelled) {
    // this.setState({ photoURL: result.uri });
    this._handlePhotoChoice(result)
  }
};

_handlePhotoChoice = async pickerResult => {
  let userId = this.state.userId
  firebase
    .storage()
    .ref('photos/profile_' + userId + '.jpg')
    .putFile(pickerResult.uri)
    .then(uploadedFile => {
      console.log("Firebase profile photo uploaded successfully")
    })
    .catch(error => {
      console.log("Firebase profile upload failed: " + error)
    })
}

在iOS模拟器中测试,并使用调试器检测错误,我只是返回了这个错误:

"Error: An unknown error has occurred.
at createErrorFromErrorData (blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2371:17)
at blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2323:27
at MessageQueue.__invokeCallback (blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2765:18)
at blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2510:18
at MessageQueue.__guardSafe (blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2678:11)
at MessageQueue.invokeCallbackAndReturnFlushedQueue (blob:http://localhost:19001/e9d43477-4e42-4f7a-b494-16485def4c28:2509:14)
at http://localhost:19001/debugger-ui/debuggerWorker.js:70:58"
{"contentType":"image\/jpeg","name":"photos\/profile_XPIO2lHjlYbdLPchACZHBsmY9Jr1.jpg"}

https://github.com/invertase/react-native-firebase/issues/1177

https://github.com/invertase/react-native-firebase/issues/302

共有1个答案

闻人哲茂
2023-03-14

终于找到我的问题了。来自ImagePicker的图像的URI中有一个来自本地应用程序缓存的“%”字符。此百分比的URI编码为'%25',这导致putFile代码找不到该文件。在uri周围添加一个decodeURI调用解决了这个问题。

let fileUri = decodeURI(pickerResult.uri)
 类似资料:
  • 我想上传图片到存储区。每次我启动我的模拟器时,我都没有错误,而且一切都运行得很好,只是当我在模拟器中选择图片并上传它们时,即使在我刷新之后,它也不会显示在Firebase存储区中。下面是我的代码:

  • 我的控制台中出现以下错误。 失败:生成已完成,但有2次失败。 > 错误:任务“:React-Native-Video:CompileDebugJavaWithJavac”执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。 尝试: > 错误:任务“:React-native-firebase:CompileDebugJavaWithJavac”执行失败。 编译失败;有关详细信息,请参阅编译器

  • 我构建了一个react原生应用程序,并将其与Firebase集成。当我使用npx react-native Run-IOS运行时,它在ios中运行良好。如果我直接在android studio中打开项目并运行它,它甚至可以在android中工作。但是当我运行命令run-android时,我得到以下错误: npx React-本机运行-Android 运行jetifier将库迁移到AndroidX的

  • 我在linux操作系统安装过程中遇到了一个与React本机现有应用程序代码有关的问题。 一切都已设置(React Native和Android Studio 当我运行命令时