Выберите файл документа с телефона и загрузите на сервер

Я пытаюсь получить файл документа из памяти телефона при нажатии кнопки, а затем загрузить его на сервер. Но я не знаю, какую библиотеку использовать и как это сделать.

1 ответ

Если вы хотите использовать библиотеку, у вас есть React-native-fetch-blob или axios.

Если React-native-fetch-blob, вы можете сделать это следующим образом:

RNFetchBlob.fetch('POST', 'http://www.example.com/upload-form', {
    Authorization : "Bearer access-token",
    otherHeader : "foo",
    'Content-Type' : 'multipart/form-data',
  }, [
    // element with property `filename` will be transformed into `file` in form data
    { name : 'avatar', filename : 'avatar.png', data: binaryDataInBase64},
    // custom content type
    { name : 'avatar-png', filename : 'avatar-png.png', type:'image/png', data: binaryDataInBase64},
    // part file from storage
    { name : 'avatar-foo', filename : 'avatar-foo.png', type:'image/foo', data: RNFetchBlob.wrap(path_to_a_file)},
    // elements without property `filename` will be sent as plain text
    { name : 'name', data : 'user'},
    { name : 'info', data : JSON.stringify({
      mail : 'example@example.com',
      tel : '12345678'
    })},
  ]).then((resp) => {
    // ...
  }).catch((err) => {
    // ...
  })

Вам нужно будет получить путь к файлу из таких библиотек, как RNFS или даже RNFetch blob.

https://github.com/wkh237/react-native-fetch-blob

Вы также можете использовать axios ( https://github.com/mzabriskie/axios), но я им не пользуюсь, поэтому больше не могу вам помочь.

Разница между ними заключается в том, как они отправляют данные. RNFB использует API выборки и переходит к нативному для получения кодировки Base64, axios работает через XMLHttpRequests, который с большей вероятностью будет использоваться в интернет-браузерах.

Надеюсь, поможет.

Другие вопросы по тегам