所以我试图将图像上传到我的node.js服务器。在我的组件中,我选择了要上传的图像,将其发送到我的服务,然后将其发送到服务器。我做了一些console.logs来检查我是否收到了该文件。
我不确定我是否需要req.body或req.files所以我做了两个。 req.body返回一个空对象,req.files返回 undefined 。有谁知道我做错了什么?我认为它与请求选项有关。
我要上传的文件是png文件。
这是控制台的样子(来自下面的userService文件中的console.logs的结果
用户服务文件:这里我在上面的控制台中创建了一些带有结果的console.logs。我想我在这里需要特殊选项来提出请求,但我不知道哪些选项。
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.logs来检查文件是否到达后端,它没有
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"
})
});
后端console.logs的结果
输入, {}, 未定义
答案 0 :(得分:1)
由于您将文件作为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
})