简体   繁体   English

在nodejs中发送带有上传文件的表单

[英]send form with upload file in nodejs

i use busbody to upload file in nodejs i can upload file but i cant get text message in bodyparser my fornt end code is : 我使用busbody在nodejs中上传文件,我可以上传文件,但是我在bodyparser中无法收到文本消息,我的最后端代码是:

<script>
    $("input[type='button']").click(function(){
    var files = $("input[type='file']").get();

    var formData = new FormData();
    var text  = "xxxxx";
    var url  = "fileUpload";
    if (files.length > 0){
      for (var i = 0; i < files.length; i++) {
        var input = $("input[type='file']").get(i).files;
        var file = input;
        if(file.length>0){
          console.log( file[0].name);
          formData.append('userpic',file[0], file[0].name);
        }
      }
      formData.append('text',text);
      $.ajax({
        type: "post",
        url: url,
        processData: false,
        contentType: false,
        data: formData, // serializes the form's elements.
      });
    }
  });
</script>

server.js server.js

router.post('/fileUpload', function(req, res) {
console.log(req.body.text);
// req.pipe(req.busboy);
req.busboy.on('file', function(fieldname, file, filename) {
    console.log('ok2');
    var fstream = fs.createWriteStream('./public/images/' + filename);
    file.pipe(fstream);
    fstream.on('close', function () {

    });
});
res.send('upload succeeded!');
});

this line of code console.log(req.body.text); 这行代码console.log(req.body.text); just return {} 只需返回{}

Try using body-parser: npm install --save body-parser and then select middleware: var bodyParser = require('body-parser'); app.use(bodyParser.json()); 尝试使用body-parser: npm install --save body-parser ,然后选择中间件: var bodyParser = require('body-parser'); app.use(bodyParser.json()); var bodyParser = require('body-parser'); app.use(bodyParser.json());

Or use the middleware directly: var bodyParser = require('body-parser'); router.post('/fileUpload', bodyParser.json(), function(req, res) {....}); 或直接使用中间件: var bodyParser = require('body-parser'); router.post('/fileUpload', bodyParser.json(), function(req, res) {....}); var bodyParser = require('body-parser'); router.post('/fileUpload', bodyParser.json(), function(req, res) {....});

Also try using console.log(req.body) to look at format of the request. 也可以尝试使用console.log(req.body)来查看请求的格式。

I think this is because of this line: file.pipe(fstream); 我认为这是因为这一行: file.pipe(fstream); , this should be fstream.pipe(file) . ,这应该是fstream.pipe(file)

And like Steven say multer is a good alternative. 就像史蒂文(Steven)所说的,穆尔特(multer)是个不错的选择。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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