我无法从Android上的React Native应用程序上传图像(iOS可以正常工作)。尝试上传时,出现以下错误:
错误:网络错误
在createError(buildURL.js:33)
在XMLHttpRequest.handleError(xhr.js:144)
在XMLHttpRequest.dispatchEvent(event-target.js:172)
在XMLHttpRequest.setReadyState(XMLHttpRequest.js:576)
在XMLHttpRequest .__ didCompleteResponse(XMLHttpRequest.js:392)
在XMLHttpRequest.js:505
在RCTDeviceEventEmitter.emit(EventEmitter.js:190)
在MessageQueue .__ callFunction(MessageQueue.js:344)上
在MessageQueue.js:107
在MessageQueue .__ guard(MessageQueue.js:291)
所有其他请求均有效,连接已配置为我的本地静态IP地址,因为我正在物理设备上而不是在模拟器中进行测试。
我已经研究了许多解决方案:
type
添加到data
,我已经(在下面详细介绍)localhost
以下是处理此问题的代码:
ProfileImage.js
(react-native-image-picker
的包装器):
async onHandleResizedImageUri(image) {
var data = new FormData();
data.append("profile_image", {
uri: image.path,
name: image.name,
type: "image/jpeg"
});
let imageUploadSuccess = await global.api.callPostImage("/api/profile-image", data);
Api.js
async callPostImage(url, data) {
try {
const settings = {
baseURL: config.api_host,
timeout: 1000,
headers: {
"content-type": "multipart/form-data"
}
};
const response = await this.axios.post(url, data, settings);
return response;
} catch (error) {
console.log(error);
}
}
此外,在debug
和release
模式下,对于多个服务器(本地服务器,暂存服务器和生产服务器),都会发生此问题。所有其他网络请求都可以正常工作,但是这一请求将无法完成。有人有什么建议吗?
设备信息: