【问题标题】:multer, react native image picker image upload not working on iOSmulter,反应原生图像选择器图像上传在iOS上不起作用
【发布时间】:2020-03-19 07:37:02
【问题描述】:

我在通过 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) 然后返回成功消息。

我可以在 android 模拟器上看到控制台日志,但在 iOS 模拟器上看不到。

事实上,看起来图像并没有被发送到后端。但是后端没有错误,iOS没有记录。

真的很郁闷

有人可以帮忙吗?

【问题讨论】:

    标签: android ios fetch multer react-native-image-picker


    【解决方案1】:

    0.39 以下的 react-native 和 Flipper 版本存在问题,导致文件上传的网络请求失败,请尝试手动更新您的 Flipper 版本。在你的podfile:

    versions['Flipper'] ||= '~> 0.51.0'
    

    【讨论】:

    • 感谢我被困在这个问题上很多天,并在更新鳍状肢版本后得到了修复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2021-08-23
    • 2023-03-11
    相关资源
    最近更新 更多