[英]multer “req.file” is undefined for http request from script but working with html form tag
我在Node.js上使用multer构建了一个简单的文件上传器。 当我使用html表单标签上传文件时,效果很好:
<form id="uploadForm" enctype="multipart/form-data" method="post">
<input type="file" name="userFile" />
<input type="submit" value="Upload File" name="submit">
</form>
但是,如果我尝试使用Angular JS $ http request从javaScript中执行相同操作,则会引发错误,提示“ req.file未定义”。 使用邮递员上传时会引发相同的错误。
我的角度$ http请求:
var formData = new FormData();
formData.append('file', file);
$http.post('http://localhost:8080/api/file', formData, {
headers: {'Content-Type': 'multipart/form-data'}
})
.then(function(res){
console.log(res);
})
.catch(function(err){
console.log(err);
});
我的上传API:
app.post('/api/file', function(req, res) {
var upload = multer({
storage: multer.memoryStorage()
}).single('userFile')
upload(req, res, function(err) {
console.log(req);
if(req.file) {
var buffer = req.file.buffer;
var filename = req.file.originalname;
fs.writeFile('./uploads/' + filename, buffer, 'binary', function(err) {
if (err) throw err
res.end('File is uploaded')
})
} else {
res.end('Invalid request : file not found')
}
});
})
有很多类似的问题,但是没有一个问题可以帮助我解决这个问题。 有人可以在这里让我知道这个问题吗? 谢谢。
将userFile
更改为file
var upload = multer({
storage: multer.memoryStorage()
}).single('file')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.