我尝试过的代码是:
//jade
input(type='file', ng-model='filename',file-model='Image', required='')
// controller.js
$scope.reupload = () => {
$scope.user = {
UserName: 'sam',
FirstName: 'sameer',
};
const fd = new FormData();
$scope.theData = {};
fd.append('file', $scope.Image);
$scope.theData.i = fd;
$http({
method: 'POST',
url: '/api/uploadresume',
data: $scope.theData,
})
.then((data) => {
console.log(data);
}).catch((err) => {
console.log(`error ${err}`);
});
};
//server.js
app.post('/api/uploadresume', api.UploadAlumniResume);
//api.js
exports.UploadAlumniResume = (req, res) => {
console.log('req.body', req.body);
console.log('req.file', req.file);
};
我正在获取文件数据inito $ scope.Image ,
并且我使用const fd = new FormData()附加数据。
fd附加 $ scope.Image 。
然后将 $ scope.theData 数据存储到发布请求中。
我得到的结果是:
// req.body $ req.file控制台
req.body { i: {} }
req.file undefined
我需要访问req.body数据并读取和fs写入req.file数据。
请给我任何解决方案!
答案 0 :(得分:0)
您不能在要发布的对象中放入FormData
。它必须是数据本身。
const fd = new FormData();
fd.append('file', $scope.Image);
$http({
method: 'POST',
url: '/api/uploadresume',
data: fd,
processData: false
})
答案 1 :(得分:0)
上传图片或文件时,需要传递标题'Content-Type': 'multipart/form-data'
如果您使用的是bodyparser
,则主体解析器将无法处理form-data
,而只能处理application/x-www-form-urlencoded
和application/json
数据
在您获得req.file undefined
时,这是因为bodyparser
无法与表单数据一起使用
因此使用multer
处理form-data
。