#javascript #react-native
#javascript #react-native
Вопрос:
Я пишу код в react для отправки данных JSON с файлом на серверный сервер, и это выглядит нормально, но когда я отправляю те же данные в React Native, возникает исключение данных из составных форм.
Вот код, который я пробовал на стороне React, и он работает правильно:
const incident = {
'incidentDateTime': '05-Apr-2019 12:39',
'description': 'desc',
'actionTaken': 'Action Taken',
'additionalInformation': '',
'incidentTypeId': 1,
'communityId': 1,
'reporterId': 2,
'reporterName': 'test user'
}
formData.append('incident', new Blob([JSON.stringify(incident)], {
type: 'application/json'
})
)
const instance = axios.create({
baseURL: 'http://18.XXX.XX.XXX:80XX/api/',
headers: { 'x-authorization': 'Bearer XXXXXXXX' }
})
instance.post('incidents', formData)
Он работает нормально, но если я отправлю данные по этому же шаблону в React Native.Сервер выдаст исключение, что нет данных формы из нескольких частей.
Я попробовал использовать пакет react-native-fetch-blob. Далее следует код через react-native-fetch-blob
import RNFetchBlob from 'react-native-fetch-blob'
const BlobRN = RNFetchBlob.polyfill.Blob
const formData = new FormData()
const incident = {
// 'id': 0,
'incidentDateTime': '05-Apr-2019 12:39',
'description': 'desc',
'actionTaken': 'Action Taken',
'additionalInformation': '',
'incidentTypeId': 1,
'communityId': 1,
'reporterId': 2,
'reporterName': 'test user'
}
const blobAttrs = { type: 'application/json' }
const blobPromise = BlobRN.build(incident, blobAttrs)
blobPromise.then(blobInstance => {
formData.append('incident', {
uri: fileInstance._ref,
type: fileInstance.type,
name: fileInstance.name
})
const instance = axios.create({
baseURL: 'http://18.XXX.XX.XX:80XX/api/',
headers: { 'x-authorization': 'Bearer XXXX' }
})
instance.post('incidents', formData)
})
Вот снимок запроса при попытке с помощью react-native-fetch-blob
Комментарии:
1. У них есть пример прямо здесь . Вы пробовали использовать
RNFetchBlob.fetch()
вместо axios? Axios может не знать, что делать с полизаполнением для большого двоичного объекта.2. Ну, это не родной Blob. Не удивлен, что FormData не знает, как с этим справиться, но очень удивлен, что он не отображается как «[object Object]». Но почему вы отправляете свои данные JSON в виде файла? Вы не выиграете больше, чем если бы отправили его как часть form-data (
formData.append('incident', JSON.stringify(incident))
)