【问题标题】:How to append more than one array to formData()?如何将多个数组附加到formData()?
【发布时间】:2020-06-23 18:15:24
【问题描述】:

我在前端使用 react 并在后端使用 express。还有 multer,它是一个处理文件输入的第三方包。现在我想要的是应该有一个对象数组,我可以附加到 formData 并通过 axios 发送它。但是我没有这样做。我写了以下代码:

 const handleSubmit = (id, e) => {
    //formdata object to be created
    e.preventDefault()

    const formData = new FormData;

    for (var i = 0; i < dataFolder.length; i++) {
        formData.append('body[]', dataFolder[i])
    }

    for (var i = 0; i < imageArray.length; i++) {
        formData.append('image', imageArray[i])
    }
    addUpdateProduct(formData)
    handleClose()
}

addUpdateProduct(formData) 是一个 redux 操作,然后调用后端路由。

'DataFolder' 这里是一个包含键值对的对象数组,例如:

 dataFolder = [ {name: 'BB cream', type: 'cream'},{name: 'Neomycin', type: 'ointment'}]

'imageArray'也是一个包含文件数组的图像数组。当我在我的快速控制器中对其进行控制台时,我得到以下输出:

文件在文件数组中正确上传,但 dataFolder 未按预期方式显示。有什么解决办法吗?

【问题讨论】:

  • 请以文字形式包含数据,而不是文字图片。

标签: javascript reactjs


【解决方案1】:

查看append的描述:

字段的值。这可以是 USVString 或 Blob(包括 File 等子类)。如果没有指定这些值,则将值转换为字符串。

{name: 'BB cream', type: 'cream'} 是一个对象,而不是字符串或 blob。如果将普通对象转换为字符串,则会得到 '[object Object]',正如您在服务器接收到的数据中看到的那样。

您可以将其编码为 JSON 以使其成为字符串。

【讨论】:

  • 但是如果我使用这种语法然后 JSON.stringify(dataFolder[i]) 那么整个事情就变成了一个字符串。我如何将它转换回对象数组,因为我的数据库查询需要一个数组而不是字符串
  • 使用 JSON.parse.
猜你喜欢
  • 2023-01-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2020-12-03
  • 2015-11-12
  • 2018-11-02
  • 2020-06-30
  • 1970-01-01
相关资源
最近更新 更多