设置正确的标题以使用Angular和Node上传文件

时间:2018-07-04 15:36:32

标签: node.js angular multer

尝试将文件从Angular 6应用程序上传到Node服务器时,我很头疼。我在Node应用程序中具有以下路由处理程序:

var express = require('express');

var router = express.Router();

// Route for /fileupload

//****************************************************************
// Multer module for uploading files
var multer = require('multer');
// set the directory for the uploads to the uploaded to
var DIR = './uploads/';

var upload = multer({ dest: DIR }).single('cloudImg');

router.post('/', (req, res, next) => {
    var path = '';

    upload(req, res, function(err) {
        console.log('REQ HEADER', req.headers);
        if (err) {
            // An error occurred when uploading
            console.log(err);
            return res.status(422).send("an Error occured")
        }

        // No error occured.
        path = req.file.path;
        return res.send("Upload Completed for " + path);
    });
});

module.exports = router;

我使用multer模块上传文件。如果我从Postman调用API,一切正常:

enter image description here

但是,如果我从Angular应用程序发送文件,则节点服务器崩溃,并出现以下错误: TypeError:无法读取未定义的属性'path'

我意识到邮递员设置了此内容类型标头:

'content-type': 'multipart/form-data; boundary=--------------------------719034023986440712074389'

我非常确定会发生此错误,因为节点服务器需要其他类型的数据,并且它无法创建req.file对象。我知道如何设置content-type标头,但是如何生成boundary字段?或者,是否有任何方法可以告诉Angular httpClient方法针对这种情况自动生成标头?

谢谢

0 个答案:

没有答案