Multipart/form-data in 表示时如何获取其他类型字段

Posted

技术标签:

【中文标题】Multipart/form-data in 表示时如何获取其他类型字段【英文标题】:How to get other type fields when Multipart/form-data in expresses 【发布时间】:2015-10-12 02:07:04 【问题描述】:

我正在创建一个表单来上传图片,同时该表单包含其他字段。问题是当我尝试使用req.body 获取表单数据时,会有一个未定义的。你知道为什么吗?使用enctype="multipart/form-data"时无法获取其他输入?

【问题讨论】:

请检查您是否忘记使用github.com/expressjs/body-parser 我已经在用了 如果你以正确的方式使用 body-parser,body 是未定义的,这很奇怪。在这里寻找解决方案 - ***.com/questions/5149545/… 你使用multiparty成功了吗? 【参考方案1】:

您可以按如下方式使用multiparty 模块

var multiparty = require('multiparty');

exports.parseForm = function (req, res) 

   var form = new multiparty.Form();
   form.parse(req, function(err, fields, files) 

     //here you can read the appropriate fields/files

   );
;

还要确保您在 html 中正确设置了 enctype

<form role='form' method='post' enctype="multipart/form-data">

当我使用它时,它是通过 HTML 表单提交多个文本字段和一个图像文件。然后在我的parseForm 函数中,我会将它们捆绑到一个对象中以保存到 mongo,如下所示

form.parse(req, function(err, fields, files) 
      var temp = fields;
      temp.image = ;
      temp.image.data = fs.readFileSync(files.image[0].path);
      temp.image.contentType = 'image';
      var product = new Product(temp);
      product.save();
      res.redirect('/');
);

【讨论】:

如何访问form.parse里面的流?

以上是关于Multipart/form-data in 表示时如何获取其他类型字段的主要内容,如果未能解决你的问题,请参考以下文章

multipart/form-data 没有边界

关于Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的区别及用法

前端必知必会之文件上传攻略

处理没有参数的“multipart/form-data”请求异常

jmeter实现multipart/form-data类型请求

jmeter实现multipart/form-data类型请求