我正在使用FormData()和Fetch()在Android上添加一张图片到My。
我使用的公共IP没有张贴到我的本地主机或任何东西,也不使用HTTPS,也使用Genymotion模拟器。
我的代码:
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)
})捕获中返回的错误作为param:
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)是否有某种权限缺失,有什么问题吗?
干杯,
发布于 2017-02-07 23:11:45
对于我在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
});
}干杯。
https://stackoverflow.com/questions/41771225
复制相似问题