Загрузить React-Native imagePicker с топором ios на Cloudinary - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь загрузить какое-то изображение из галереи камеры на локальный компьютер и среду разработки. Мой код работает с действительным URL-адресом, например: https://res.cloudinary.com/dtdiwoz7o/image/upload/v1586706052/cn-2016-sashaonyshchenko-1920x1920-1510074905_dyfldk.jpg Но когда я передаю путь к файлу изображения, он возвращает ошибку 400. Вот мой код с некоторым журналом:

  _avatarClicked = () => {
const options = {
  title: 'Select Photo',
  storageOptions: {
    skipBackup: true,
    path: 'images',
  },
};
ImagePicker.showImagePicker(options, (response) => {
  if (response.didCancel) {
    return
  }
  else if (response.error) {
    return
  }
  else {

    let data = {
      file: response.uri,
      upload_preset: "my_preset_name",
    }

    axios.post("https://api.cloudinary.com/v1_1/my_cloud_name/image/upload", data)
      .then(res => console.log(res))
      .catch(err => console.log(err))

  }
})

}

журнал моего repsponse.uri: (файл: /// Пользователи / clement / Библиотека / Разработчик / CoreSimulator / Devices / 62E85527 -A2A C -46CD-B517-E6039F99E056 / данные / Контейнеры / данные / приложения / E218E950-3A1 C -40EB-8289-3837EC89FBBB / Документы / изображения / 46674162-E32B-4302-B28A-5EF9150206D0.jpg)

Я пытался заменить это в файле данных на этот «постоянный источник», но он не работает:

     const source = {
      uri: response.uri,
      type: response.type,
      name: response.fileName,
    }

Я видел и проверял это в документации по программе выбора изображений). но у меня такая же ошибка 400 ...

 // const source = { uri: 'data:image/jpeg;base64,' + response.data };

Я также пытаюсь использовать Base64.encode (response.url) или Base64.encodeURI (response.url)

Пожалуйста, можешь помочь мне ? И извините за мой плохой engli sh

"Reaction-native": "~ 0.61.4", "Reaction-native-image-picker": "^ 2.3.1",

///////////////////////////

Я нашел решение:

  let data = {
  file: 'data:image/jpg;base64,' + response.data,
  upload_preset: "my_preset_name",
}

axios.post("https://api.cloudinary.com/v1_1/my_cloud_name/image/upload/", data)
  .then(res => console.log(res))
  .catch(err => console.log(err))

1 Ответ

0 голосов
/ 13 апреля 2020

Хорошо, я нахожу решение:

  let data = {
      file: 'data:image/jpg;base64,' + response.data,
      upload_preset: "my_preset_name",
    }

    axios.post("https://api.cloudinary.com/v1_1/my_cloud_name/image/upload/", data)
      .then(res => console.log(res))
      .catch(err => console.log(err))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...