问题描述
我是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 (将#修改为@)