formdata所有内容都转换为字符串甚至数组

问题描述 投票:0回答:3
const formData = new FormData()
formData.append('choices', [1, 2, 3])

选择转换为

'1,2,3'

将其发送到节点JS,该节点JS失败了zod阀门,因为它预期了数组。数字也发生了同样的事情。

Axiospostrequest

axios.post('product', formData, { headers: { 'Content-Type': 'multipart/form-data', }, })
    
javascript node.js arrays form-data zod
3个回答
2
投票
formdata的值将转换为字符串。 请参阅文档:

Https://developer.mozilla.org/en-us/docs/web/api/formdata/append

字段的价值。这可以是USVSTRING或BLOB(包括 子类,例如文件)。如果未指定这些值 被转换为字符串。

您可以通过以下方式将其转换回服务器端:

const choicesArray = choices.split(',').map(Number);

const numArray = [1, 2, 3, 4, 5]; const formData = new FormData(); formData.append("data", JSON.stringify(numArray));

post请求

0
投票

在验证YUP中的模式之前,我使用以下方法来转换数据。数据作为字符串出现,但是在验证之前,我将其转换为:

serviceTags: Yup.array().transform((value, originalValue) => {
  if (typeof originalValue === 'string') {
    try {
      return JSON.parse(originalValue);
    } catch (error) {
      return []; // Return an empty array if parsing fails
    }
  }
  return value;
});

0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.