有没有一种方法可以发送包含上传文件的表单数据的 POST 请求,而不使用文本字段的 formData 对象

问题描述 投票:0回答:1

在 React ts 中,我有一个带有文本和上传文件字段的表单。表单的目的是创建一个新对象。提交表单时,会向服务器发送一个内容为表单字段的 POST 请求。附件是express multer上传的。现在发送了一个 formData 对象,我不想将此对象用于非文件字段,因为它会导致安全问题(字符串化对象)。这是现在前端的代码:

export const addPerson = async ({ person, files }: AddPersonParams) => {
    const formData = new FormData();
    formData.append('person', JSON.stringify(person));
    files.forEach((file) => formData.append('files', file));
    return post('/create', formData)
}

以及后端的路由器:

personRouter.post(
  '/create',
  upload.fields([{ name: 'files', maxCount: 100000 }]),
  createNewRequest,
);

我想要发生的是,在 person 内部的文本字段将作为 Person 对象发送,而不是在 formData 内部。有没有办法使用单个 POST 请求来做到这一点?

reactjs node.js typescript multer form-data
1个回答
0
投票

您可以发送两个对象

export const addPerson = async ({ person, files }: AddPersonParams) => {
    const formData = new FormData();
    formData.append('person', JSON.stringify(person));
    //files.forEach((file) => formData.append('files', file));
    return post('/create', {formData, files})
}
© www.soinside.com 2019 - 2024. All rights reserved.