我在通过fetch和react-native- image -picker上传图像到multer和express js后端时遇到了很大的麻烦。
下面是我的react原生代码。
try {
const data = new FormData();
data.append('image', {
name: photo.fileName,
type: photo.type,
uri:
Platform.OS === 'android' ? photo.uri : photo.uri.replace('file://', ''),
});
data.append('id', id)
fetch(`${API}save-image`, {
method: 'POST',
body: data,
})
.then(response => response.json())
.then(response => {
console.log('upload succes', response);
})
.catch(error => {
console.log('upload error', error);
});
} catch (error) {
console.log(error);
if (error.response !== undefined) {
message = error.response.data.message;
} else {
message = error;
}
return Promise.reject(message);
}image变量是我们从react-native- image -picker库中获得的响应对象,该库包含图像数据和uri以及其他所需的项。
在后端,我尝试登录由multer配置的req.files对象。
const Storage = multer.diskStorage({
destination(req, file, callback) {
callback(null, path.join(__dirname, '../uploads/'));
},
filename(req, file, callback) {
callback(null, new Date().toISOString() + '_' + file.originalname);
},
});
const upload = multer({
storage: Storage,
limits: { fieldSize: 25 * 1024 * 1024 },
});
router.post(
'/save-image',
upload.array('image', 3),
controller.saveImage
);在控制器中,我将只执行console.log(req.files),然后返回成功消息。
我可以在安卓模拟器上看到控制台日志,但在iOS模拟器上看不到。
事实上,图像看起来并没有被发送到后端。但是后端没有错误,在iOS的情况下也不会记录。
这真的很令人沮丧
有人能帮帮忙吗?
发布于 2020-08-05 00:07:56
0.39以下的react-native和flipper版本存在问题,导致文件上传的网络请求失败,请尝试手动更新您的flipper版本。在你的podfile中
versions['Flipper'] ||= '~> 0.51.0'https://stackoverflow.com/questions/60752731
复制相似问题