-
安卓上传时上传失败,原因如下
// https://www.jianshu.com/p/0cceba518540
造成这个问题的原因是React Native 0.62后增加了对Flipper的支持。Flipper是一个移动APP的调试工具,由于默认支持的Flipper的版本低,存在兼容问题。导致调试模式下会出现上传文件发送请求失败的情况。
解决方法: 使用原生的ajax请求
function sendXmlHttpRequest(data, url, RequestHeader) {
const xhr = new XMLHttpRequest();
return new Promise((resolve, reject) => {
xhr.onreadystatechange = e => {
if (xhr.readyState !== 4) {
return;
}
if (xhr.status === 200) {
resolve(JSON.parse(xhr.responseText));
} else {
reject('Request Failed');
}
};
xhr.open('POST', url);
for (let key in RequestHeader) {
xhr.setRequestHeader(key, RequestHeader[key]);
}
xhr.send(data);
});
}
使用
if (Platform.OS === 'android') {
console.log('sendXmlHttpRequest');
res = await sendXmlHttpRequest(formData, host, config.headers);
console.log('android-res', res);
}