在 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 请求来做到这一点?
您可以发送两个对象
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})
}