我正在向" Cloudinary"发出POST请求服务器上传图像并使用axios在react-native中发送formdata。整个过程在iOS上工作正常但在Android上我得到了#34;网络错误"。
我正在使用axios 0.18.0并且在过去的3天内坚持了这一点。有人请帮助我。
许多人都面临这个问题,但到目前为止还没有解决方案。
var photo = {
uri: image.sourceURL,
type: image.mime,
name: image.filename,
};
var formData = new FormData();
formData.append('file',photo);
formData.append('upload_preset','abcde');
axios({
url:'https://api.cloudinary.com/v1_1/abcde/upload',
method:'POST',
headers:{
'Content-Type':'application/x-www-form-urlencoded'
},
data:formData
}).then(function(response){
}).catch((error) =>{
//Network error comes in
});
确切的控制台错误是:
Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:87)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:567)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:397)
at XMLHttpRequest.js:503
at RCTDeviceEventEmitter.emit (EventEmitter.js:179)
at MessageQueue.__callFunction (MessageQueue.js:351)
at MessageQueue.js:116
at MessageQueue.__guardSafe (MessageQueue.js:314)
有人能指出我正确的方向,因为我在过去3天被困在这里。 P.S:相同的代码在iOS上运行良好。
答案 0 :(得分:0)
first of all to get correct error message. console error.response and in headers add
Accept: "application/json",
content-type: "multipart/form-data",
答案 1 :(得分:0)
我也在这个问题上苦苦挣扎。但是我现在发现了Android设备上axios发布网络createError的问题。出现axios网络错误的原因是因为我传递给axios的表单数据包含错误类型的数据对象。我已经包含了一个图像对象(Expo的ImagePicker对象)作为表单数据的参数之一,我认为它不能被axios接受。 Axios可能只接收字符串,浮点数,整数或图像作为参数。 image不能作为参数传递,它不是图像类型,它是一个响应本机对象,我已删除它,并通过将image.uri分配给param的值来包含一个图像字段作为param,然后它可以工作。希望这对某些可能遇到我以前遇到过的问题的人有所帮助。 测试axios网络错误时,一一删除一些表单数据,您将找出引起问题的原因之一。