从请求获取图像并使用fs保存图像

问题描述

我是NodeJ的新手,正在从事一个大项目。我们正在使用Quasar框架作为前端,特别是,我正在使用<q-uploader>组件,该组件接受输入图像。在我的POST功能(节点后端)中,我可以使用fs.writeFile方法正确保存图像,该方法由Postman以“二进制”形式发送,因此我可以打开它并查看image.jpg

但是,当上传者发送图像时,服务器会收到一个无法处理的对象。因此,我使用了标头image/*,服务器收到了某种Buffer,它会转换为jpg文件,但无法打开!

我还尝试使用标头application/octet-stream发送图像,但是它收到“未定义”的图像。我实际上正在尝试一切可能的方法,但是在Node上新手并没有帮助。我只需要正确的标头提供给类星体组件,然后使用正确的方法将其转换为jpg / png文件并存储即可。

这是后端代码

server.post(
  '/upload',rJWT({
    secret: process.env.AUTH,}),async function (req,res) {
    //if (!req.user.logged_in && !req.user.user_id)
    //return res.send(new UnauthorizedError('This user isn`t authorized'));
    log.debug(req.body);
    fs.writeFile(process.env.UPLOAD_PATH + '/' + Date.Now() + '.jpg',req.body,function (err) {
      if (err) return console.log(err);
      console.log(req.headers['content-type']);
      console.log('File uploaded!');
    });
    try {
      res.send(200);
    } catch (e) {
      res.send(new UnauthorizedError('Duplicate entry'));
    }
  },);

这是类星体成分:

<template>
  <q-page class="flex flex-center">
    <q-uploader
      label="Carica immagine"
      accept=".jpg,image/*"
      factory="factoryFn"
      style="max-width: 300px"
    />
  </q-page>
</template>;


<script>
export default {
methods: {
  factoryFn(file) {
    return new Promise((resolve,reject) => {
      // Retrieve JWT token from your store.
      const token ="censured";
      resolve({
    url: "http://localhost:8083/upload",method: "POST",headers: [
      { name: "Authorization",value: `Bearer ${token}` },{ name: "Content-Type",value: "image/*" }
    ]
  });
});
}
}
};
</script>

我在控制台中看到的内容

[Buffer] (10104 bytes): 0x2d2d2d2d2d2d5765624b6974466f726d426f756e6461727956514a6567374676445563306f426b3…

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)