[英]React Native Fetch() with FormData() HTTP TypeError: Network request failed
在Android上处理图片后,正在使用FormData()和Fetch()将图像文件发布和镜像到我的服务器。
我正在使用公共IP而不发布到我的本地主机或任何东西,并且不使用HTTPS,也使用Genymotion Emulator。
我的代码:
var fd = new FormData();
fd.append('image', {path:'file:///'});
fetch(UPLOAD_URI,{
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
},
body: fd
}).then(response => {
console.log("image uploaded")
}).catch(err => {
console.log(err)
})
在catch中返回错误作为参数err:
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (fetch.js:441)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:542)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:378)
at XMLHttpRequest.js:482
at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
at MessageQueue.__callFunction (MessageQueue.js:236)
at MessageQueue.js:108
at guard (MessageQueue.js:46)
at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:107)
是否缺少某种权限,这是什么问题?
干杯,
对于我在android上的情况,以下模块帮助我解决了此问题,因为它使用java将文件发送到服务器,并在PHP中使用$ _FILES进行获取:
npm install react-native-file-transfer-android
我的代码:
var FileTransfer = require('react-native-file-transfer-android');
const UPLOAD_URI = "http://< IP / Domain>/index.php"
makeUuid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
sendImageToServer(data){
var uuid = this.makeUuid();
FileTransfer.upload({
uri: data,
uploadUrl: UPLOAD_URI,
fileName: 'temp.jpg',
mimeType: 'image/jpg',
headers: {
'Accept': 'application/json'
},
data: {
name:uuid
}
}, (err, res) => {
if(err) {
console.error(err);
} else {
console.log(res);
}
});
}
saveImage(imgDate){
let states = {camera:false};
states[this.state.ActiveImage] = imgDate.path;
this.sendImageToServer(imgDate.path);
this.setState({
...states
});
}
干杯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.