尝试将文件从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,一切正常:
但是,如果我从Angular应用程序发送文件,则节点服务器崩溃,并出现以下错误: TypeError:无法读取未定义的属性'path'。
我意识到邮递员设置了此内容类型标头:
'content-type': 'multipart/form-data; boundary=--------------------------719034023986440712074389'
我非常确定会发生此错误,因为节点服务器需要其他类型的数据,并且它无法创建req.file
对象。我知道如何设置content-type
标头,但是如何生成boundary
字段?或者,是否有任何方法可以告诉Angular httpClient方法针对这种情况自动生成标头?
谢谢