因此,我试图将图像上传到我的node.js服务器。在我的组件中,我选择了要上传的图像,将其发送到我的服务,然后将其发送到服务器。我做了一些console.logs来检查我是否已经收到文件。

我不确定是否需要req.body或req.files,所以我都做了。 req.body返回一个空对象,而req.files返回未定义。有人知道我做错了吗?我认为这与请求选项有关。

我要上传的文件是png文件。

这是控制台的外观(下面的userService文件的console.logs结果)

javascript - MEAN应用:无法在后端接收图片,上传失败-LMLPHP

用户服务文件:在这里,我在上面的控制台中创建了一些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的结果

输入,
{},
未定义

最佳答案

由于您将文件作为formData发送,因此您需要使用节点中间件来处理多部分表单数据。

BusboyMulter都是不错的选择

您可以像这样使用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
})

关于javascript - MEAN应用:无法在后端接收图片,上传失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49433982/

10-11 14:41