You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quasar v2 q-uploader组件自定义form fields未传递到Node.js后端问题求助

问题解决方案

前端侧排查&修正

  • 先确认Quasar版本是否匹配:form-fields属性仅在Quasar v1.15+/v2.0+ 版本中支持,低于该版本需要通过@added事件手动给文件追加字段,示例代码:
// 低版本Quasar兼容写法
onFileAdded(file) {
  file.fields = {
    name: 'value'
  }
}
  • 若使用符合要求的版本,可先去掉form-fields前的动态绑定冒号测试静态字段是否生效:
<q-uploader
  url="http://localhost:3000/api/upload/new"
  label="Max. size: 10 MB"
  accept=".pdf, image/*"
  max-file-size="10485760"
  with-credentials
  form-fields="[{name: 'name', value: 'value'}]"
  @rejected="onRejected"
/>
  • 校验前端配置生效结果:打开浏览器网络面板,查看对应上传请求的Payload标签,确认Form Data分区下是否已经出现你定义的name: value字段,若此处已经存在字段,说明前端配置正常,问题出在后端解析逻辑。

后端侧排查&修正

你直接打印req.body为空是正常现象:multipart/form-data类型的上传请求,Express默认的express.json()、express.urlencoded()中间件不会解析该类型的请求体,必须调用formidable的parse方法才能同时拿到额外字段和上传文件,修正后的代码示例:

router.post("/api/uploads/new", async (req, res) => {
  const form = new formidable.IncomingForm();
  // 调用parse方法解析请求体获取字段和文件
  form.parse(req, (err, fields, files) => {
    if (err) {
      return res.status(500).json({ error: '请求解析失败' })
    }
    console.log(fields); // 此处即可获取到前端传的{name: 'value'}
    console.log(files); // 此处为上传的文件对象
    // 后续业务逻辑
  })
  ...
}

内容的提问来源于stack exchange,提问作者Mia Temma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:24:02