Выберите файл документа с телефона и загрузите на сервер
Я пытаюсь получить файл документа из памяти телефона при нажатии кнопки, а затем загрузить его на сервер. Но я не знаю, какую библиотеку использовать и как это сделать.
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, который с большей вероятностью будет использоваться в интернет-браузерах.
Надеюсь, поможет.