【发布时间】:2017-04-08 00:06:17
【问题描述】:
情况
我实现了文件上传。前端代码取自流行的tutorial。我在服务中发送 POST:
myApp.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
}
}]);
后端的典型 multer 用法:
exports.postFile = function (req, res) {
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, '../documents/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
var upload = multer({ //multer settings
storage: storage
}).single('file');
upload(req, res, function (err) {
if (err) {
res.json({error_code: 1, err_desc: err});
return;
}
res.json({error_code: 0, err_desc: null});
})
};
这行得通。
问题
如何在同一个 POST 中发送一些数据,比如说字符串"additional info"?
我尝试了什么
我尝试在服务中添加数据,即:
...
var fd = new FormData();
fd.append('file', file);
fd.append('model', 'additional info');
$http.post(uploadUrl, fd, {...})
好像是发送的,但是后台不知道怎么接收。试图在req 中找到它(没有成功)。
【问题讨论】: