我正在react-native-image-picker (^0.28.0)
与rn-fetch-blob (^0.10.15)
. 到目前为止,它在使用模拟器时工作,但是当我在真正的 iPhone 上使用它时,图像没有上传,它无法上传,并出现以下错误,该错误被承诺捕获。
"Error: Could not connect to the server."
(是的,服务器已启动并正在运行)
如果你看到这个,你可能会认为这是一个后端问题,但其他请求在真实设备上运行良好,这是唯一有问题的。正在发送的图像请求是这样的:
{
data: "RNFetchBlob-file:///var/mobile/Containers/Data/Application/843A96A1-0000-40D3-B50F-95D69B94B87A/tmp/5D22283B-2014-4E9E-AC3E-AE677D91A366.jpg"
filename: "IMG_6834.jpg"
name: "pictures"
type: "image/jpeg"
}
模拟器设备和我的 iPhone 的唯一区别是数据路径。模拟器上的位置就像"RNFetchBlob-file:///Users/marian-mac/Library/Developer/CoreSimulator/Devices/....etc"
知道为什么应该与模拟器不同吗?它似乎正在发送相同的请求。
一些额外的信息,当我在 Image 组件中预览图像时,它也显示得很好。因此,在真正的 iPhone 上,路径似乎是正确的。
这是上传图片的方法
uploadPicture: function(data, token) {
return RNFetchBlob.fetch('POST', Constants.baseUrl + '/picture', {
Authorization: "Bearer " + token,
'Content-Type': 'multipart/form-data;boundary=***BOUNDARY***'
}, data);
},
这就是我构建图片请求数组的方式,this.state.images 包含图像选择器数据。
this.state.images.forEach((image) => {
reqData.push({
data: image.imageFile,
filename: image.fileName.split('.')[0] + '.jpg',
name: 'pictures',
type: image.type
})
});