Javascript 平均应用程序:Can';无法在后端接收图像,上载失败
因此,我正在尝试将图像上载到node.js服务器。在我的组件中,我选择了要上载的图像,将其发送到我的服务,然后将其发送到服务器。我做了一些console.log来检查是否收到了文件 我不确定我是需要req.body还是req.file,所以我两个都需要。req.body返回空对象,req.files返回未定义。有人知道我做错了什么吗?我认为这与请求选项有关 我想上传的文件是png文件 这就是控制台的外观(来自下面userService文件中的console.log的结果) 用户服务文件:我在这里制作了一些控制台日志,上面的控制台显示了结果。我想我需要在这里使用特殊选项来发出请求,但我不知道是哪些选项。Javascript 平均应用程序:Can';无法在后端接收图像,上载失败,javascript,node.js,angular,mean-stack,Javascript,Node.js,Angular,Mean Stack,因此,我正在尝试将图像上载到node.js服务器。在我的组件中,我选择了要上载的图像,将其发送到我的服务,然后将其发送到服务器。我做了一些console.log来检查是否收到了文件 我不确定我是需要req.body还是req.file,所以我两个都需要。req.body返回空对象,req.files返回未定义。有人知道我做错了什么吗?我认为这与请求选项有关 我想上传的文件是png文件 这就是控制台的外观(来自下面userService文件中的console.log的结果) 用户服务文件:我在这
postFile(fileToUpload: File, userId) {
console.log(fileToUpload);
const formData: FormData = new FormData();
formData.append('fileKey', fileToUpload, fileToUpload.name);
console.log(formData);
return this.http.post("http://localhost:3200/user/uploadProfilePicture/" + userId, formData, )
.map(() => { return true; })
.catch((e) => this.handleError(e));
}
node.js后端:只需一些console.log来检查文件是否到达后端,而它没有到达后端
router.post('/uploadProfilePicture/:userId', function(req, res){
console.log('entered');
console.log(req.body);
console.log(req.files);
res.status(200).json({
msg: "sup mognol"
})
});
后端控制台的结果。日志
进入,
{},
未定义由于您将文件作为formData发送,因此需要使用节点中间件来处理多部分表单数据 或者两者都是好的选择 您可以像这样使用multer:
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
app.post('/profile', upload.single('avatar'), function (req, res, next) {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
})
哦,是的,我忘了。谢谢!再问一个问题。在上面的代码(upload.single('avatar')中,化身是什么意思。它是您发送的文件的名称。因此,您的
req.file
看起来像req.files['avatar'][0]->file
。这个名称来自您在post请求中对它的称呼