微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UnhandledPromiseRejectionWarning: TypeError: 无法读取未定义的属性“缓冲区”

如何解决UnhandledPromiseRejectionWarning: TypeError: 无法读取未定义的属性“缓冲区”

我正在努力将图像从 React Native 上传到 mongodb。我收到上述错误。我可以通过邮递员上传图片。下面是处理照片上传的 NodeJS 路由

router.post(
  "/users/profile/photo",auth,upload.single("profilePhoto"),async (req,res) => {
    console.log(req);
    const buffer = await sharp(req.file.buffer)
      .resize({ width: 250,height: 250 })
      .png()
      .toBuffer();

    req.user.profile_photo = buffer;
    await req.user.save();
    res.send();
  },(error,req,res,next) => {
    res.status(400).send({ error: error.message });
  }
);

这是来自 react native 的代码

const profilePhoto = userData.images[0].replace("file:/","");

    if (profilePhoto.length !== 0) {
      const data = new FormData();
      data.append("profilePhoto",profilePhoto);
      const res = await userApi.uploadProfilePhoto(data);
      if (!res.ok) {
        console.log(res);
        alert(res.data.error);
        return;
      }
    }

上传功能

const uploadProfilePhoto = (photo) =>
  client.post(`${usersEndpoint}/profile/photo`,photo,{
    "Content-Type": "multipart/form-data; ",});

谁能帮我排查我在这里做错了什么

编辑 我正在添加过去的部分请求,这些请求不会根据 React Native 的请求退出

file: {
    fieldname: 'profilePhoto',originalname: 'profile-pic.jpg',encoding: '7bit',mimetype: 'image/jpeg',buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 48 00 48 00 00 ff e1 00 8c 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 05 01 12 00 03 00 00 00 01 00 01 ... 223959 more bytes>,size: 224009
  },

来自 Postman 的代码

var axios = require('axios');
var FormData = require('form-data');
var fs = require('fs');
var data = new FormData();
data.append('profilePhoto',fs.createReadStream('/C:/Users/user/Downloads/node-course-images/node-course-images/profile-pic.jpg'));

var config = {
  method: 'post',url: '127.0.0.1:3000/users/profile/photo',headers: { 
    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MDA1YmQ0NzkyYTQ1ZDU0ZjA1Y2MwYjUiLCJzdXBlcnVzZXIiOnRydWUsInJvbGUiOiJhZG1pbiIsIm5hbWUiOiJQYXVsIE11dGVzaGkiLCJlbWFpbCI6InN1cGVyQGdtYTlsLmNvbSIsInBob25lIjoiMDcyMjMwNDIyMyIsImlhdCI6MTYxMTk0Mzc2N30.c633qRqz-kQ00duMMJTZzW14hWsLf2Tt6nya_tWfWEY',...data.getHeaders()
  },data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

解决方法

尝试将上传功能更改为:

const uploadProfilePhoto = (photo) =>
  client.post(`${usersEndpoint}/profile/photo`,{
    headers: {
     'Accept': 'application/json','Content-Type': 'multipart/form-data',},body: photo,}
});

请发布此功能和旧功能的响应。

,

如果您的服务器处理邮递员请求,您可以尝试这样,并复制您想要的每个请求 enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?