我需要向服务器发出 PATCH 请求,该请求期望一个非常具体的请求格式。类似于这样:
{
file: MY_FILE_OBJECT
name: 'Name',
nestedObject: {
nestednestedObject1: {
name: 'Some other name'
},
nestednestedObject2: {
name: 'Yet another name'
},
}
}
因为我需要能够传入一个文件,所以我必须将其转换为一个
FormData
对象。因此,对于主要字段来说,构建请求体是非常简单的。const data = new FormData()
data.append('file', file, file.name)
data.append('name', 'Name')
然而,我该如何做嵌套的
translation
对象呢?我在另一个线程中看到了建议让我做一个 blob。应该是这样的:const fullPatchObject = {
nestedObject: {
nestednestedObject1: { name: 'Some other name' }
nestednestedObject2: { name: 'Yet another name' }
}
}
const blob = new Blob([JSON.stringify(fullPatchObject)], { type: 'application/json' })
data.append('nestedObject', blob)
然而,这并不起作用。我在服务器上使用multer来处理文件,我得到了以下错误对象:
name: 'MulterError',
message: 'Unexpected field',
code: 'LIMIT_UNEXPECTED_FILE',
field: 'nestedObject'
请记住,如果我不使用嵌套对象,则所有内容都按预期工作,包括我尝试进行PATCH的文件和字段。问题似乎是multer认为我的“nestedObject”也可能是一个文件?事实是... 呃... 它不是,我只想将其作为字段传递,就像“name”字段一样。 我错过了什么吗?有什么方法可以使用“FormData”发送嵌套对象吗?