React Native Firebase Storage Upload завершается с неизвестной ошибкой - PullRequest
0 голосов
/ 30 мая 2018

Я использую Reaction-native-Firebase для работы с нашей учетной записью Firebase для аутентификации, хранилища данных и хранилища.Попытка загрузить фотографию в хранилище не удалась с неизвестной ошибкой.Вот попытка кода:

_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 Simulator и использование отладчика для обнаружения ошибок. Я просто получаю эту ошибку:

"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"

ОБНОВЛЕНИЕ:

Файл загружается в корзину, но файл не является фотографией JPEG, а содержит JSON-содержимое файла:

{"contentType":"image\/jpeg","name":"photos\/profile_XPIO2lHjlYbdLPchACZHBsmY9Jr1.jpg"}

Таким образом, файл JSON каким-то образом заканчивается в корзиневместо реальной фотографии, а затем выдается ошибка.

Похоже, что эта проблема отслеживается пару раз, но не решена:

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

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

1 Ответ

0 голосов
/ 19 июня 2018

Наконец-то нашел мою проблему.URI изображения из ImagePicker содержит символ «%» из локального кэша приложения.Этот процент кодировался по URI в «% 25», что привело к тому, что файл не был найден кодом putFile.Добавление вызова decodeURI вокруг uri устранило проблему.

let fileUri = decodeURI(pickerResult.uri)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...