繁体   English   中英

对于脚本中的HTTP请求,未定义multer“ req.file”,但使用html表单标签

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM