【问题标题】:Is there any easy way to convert multipart/form data to an array in NodeJS?有没有简单的方法可以将多部分/表单数据转换为 NodeJS 中的数组?
【发布时间】:2017-03-02 01:29:12
【问题描述】:

我正在尝试一些输入以在 Sails/nodeJS 中将发布数据作为数组获取;

当我尝试这种方式时,可以完美地将数据作为数组获取。

<input type="text" class="form-control" name="answer[1][txt]">
 <input type="text" class="form-control" name="answer[1][img]">
 <input type="text" class="form-control" name="answer[2][txt]">
 <input type="text" class="form-control" name="answer[2][img]">

输出:

answer:[ { txt: 'ans 1', img: 'yes' }, { txt: 'ans 2', img: 'yes' } ]

但是当我在表单中使用 enctype(enctype="multipart/form-data") 属性时,无法像以前的方法那样获取数据。 输出:

  'answer[0][txt]': 'ans 1', 'answer[0][img]': 'yes', 
'answer[1][txt]': 'ans 2','answer[1][img]': 'yes',

我不知道我使用 enctype 属性时发生了什么。我只想首先使用 enctype(multipart/form-data) 属性返回输出数据。 谢谢你

【问题讨论】:

  • 为什么需要使用multipart/form-data?
  • 用于上传图片/文件
  • 你可以POST&lt;form&gt;使用fetch()XMLHttpRequest()或其他功能,还是只能使用html&lt;form&gt;
  • 只使用带有express js的html表单
  • 您可以解析服务器端返回的值以创建对象数组或从值中创建JSON

标签: javascript arrays node.js forms sails.js


【解决方案1】:

您可以从当前返回的对象创建一个新对象;使用for..in 循环迭代对象,匹配"txt""img" 部分属性,将值设置为现有对象的值

let data = {
  'answer[0][txt]': 'ans 1',
  'answer[0][img]': 'yes',
  'answer[1][txt]': 'ans 2',
  'answer[1][img]': 'yes'
};

let res = {
  answer: []
};

for (let prop in data) {
  res.answer.push({
    [prop.match(/txt|img/)[0]]: data[prop]
  })
}

console.log(res);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多