当尝试用nodejs将文件上传到服务器时,req.files为空

req.files is empty when trying to upload a file to server with node js

本文关键字:服务器 req 为空 files nodejs 文件      更新时间:2023-09-26

HTML:

<form action="/uploadpic" method="post" enctype="multipart/form-data">
    <input type="file" data-clear-btn="true" name="image" id="new_pic" value="" placeholder="Choose File">
    <input type="submit" value="Add" style="width:30%">
</form>

NodeJS:

app.post('/uploadpic', function(req,res) {
console.log(req.files);
console.log(req.body);});

我也使用:

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());
app.use(bodyParser.json())
app.use(express.bodyParser({uploadDir:'./uploads'}));
app.use(bodyParser.json({ type: 'application/vnd.api+json' }))

在控制台中我得到:

{}
{}

我似乎不明白这里可能出了什么问题。。谢谢

   var fs = require('fs');
    app.post('/uploadpic', function(req,res) {
    //req.files contains array of files iterate and get it
    //if it has only one. it is like object
    //here is the code for object
    if (req && req.files) {
     var contentType = req.files.file.type;    
     var fname = req.files.file.name;    
     var image_path = req.files.file.path;    
     fs.readFile(image_path, function (err, data) { 
      var data = data; //this is your data use this
     })
    }
})

BodyParser不包括文件上传。你需要使用类似multer或multiparty的东西。

此外,express(4.0+(不再与中间件捆绑在一起,因此您需要对POST请求使用bodysparser。