要求的事情.在angular文件上传节点js中,body为空

req.body is Empty on angular file-upload, node js

本文关键字:js 节点 为空 body 文件 angular      更新时间:2023-09-26

所以我一直在上传一个excel文件,然后把它保存到数据库。这就是表单。

<form method="post" enctype="multipart/form-data">
   <label class="uk-form-file md-btn md-btn-primary" for="user_upload">Upload File</label>
        <input 
            style="display:none;"
            type="file" 
            ngf-select 
            ng-model="user_datasource" 
            name="userdatasource_upload" 
            id="userdatasource_upload"
            accept=".xlsx,.xls,.csv"
            ngf-max-size="20MB" 
            fd-input
            ng-change="upload"/>
 </form>

这是处理上传的控制器

$scope.upload = function() {
  Upload.upload({
      url: '/api/sr/user_upload',
      data: {
         username: 'test',
         file: file_upload
      }
  }).then(function(response) {
     console.log(response);
  });      
}

这是我的节点

app.use(function(req, res, next) {
    res.setHeader("Access-Control-Allow-Methods", "POST, PUT, OPTIONS, DELETE, GET");
    res.header("Access-Control-Allow-Origin", "http://127.0.0.1:3000");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.post('/api/sr/user_upload',function(req, res) {
  console.log('============================================,');
  console.log(req);
}); 

你可以看到。我把一切都包括在内。body-parser, setHeader等,但没有运气。req.body为空。上传一个文件,然后用用户名保存到数据库。在我得到用户名之后,我将使用multer,请帮助我!谢谢!

当你在此基础上使用multer时,我正在写这个答案

multer首先保存文件,然后将表单的其余部分写入req -可以说是隐藏字段。

你需要在upload函数中获取你的rest数据,就像这样

upload(req, res, function(err) {
    if (err) {
        console.log(err);
        return res.end('Error');
    } else {
        console.log(req.body);
        req.files.forEach(function(item) {
            console.log(item);
            // move your file to destination
        });
        res.end('File uploaded to Destination');
    }
});

希望这对你有用