Javascript 使用多部分/表单数据对文件和某些字段进行修补
我正在请求我的服务器修补一些常规表单字段,并上传一个图像 如果我单独在单独的请求中执行这些操作,那么所有操作都可以完美完成,但是如果表单数据和文件在同一个请求中,则任何操作都不起作用。这就是它目前的样子:Javascript 使用多部分/表单数据对文件和某些字段进行修补,javascript,node.js,file-upload,isomorphic-javascript,Javascript,Node.js,File Upload,Isomorphic Javascript,我正在请求我的服务器修补一些常规表单字段,并上传一个图像 如果我单独在单独的请求中执行这些操作,那么所有操作都可以完美完成,但是如果表单数据和文件在同一个请求中,则任何操作都不起作用。这就是它目前的样子: const file = new FormData() file.append('uploadedFile', uploadedFile, uploadedFile.name) const patch = { name: 'Some Name', age: 18, file }
const file = new FormData()
file.append('uploadedFile', uploadedFile, uploadedFile.name)
const patch = {
name: 'Some Name',
age: 18,
file
}
return isomorphicFetch(`${MY_URL}`, {
headers: {
Accept: 'application/json'
}
method: 'PATCH',
body: patch
})
const multipartMiddleware = multer({ dest: 'uploads/' })
app.use('/myendpoint',
multipartMiddleware.single('uploadedFile'),
(req, res, next) => {
console.log('REQ', req)
req.feathers.file = req.file
next()
}
)
以下是我的中间件的外观:
const file = new FormData()
file.append('uploadedFile', uploadedFile, uploadedFile.name)
const patch = {
name: 'Some Name',
age: 18,
file
}
return isomorphicFetch(`${MY_URL}`, {
headers: {
Accept: 'application/json'
}
method: 'PATCH',
body: patch
})
const multipartMiddleware = multer({ dest: 'uploads/' })
app.use('/myendpoint',
multipartMiddleware.single('uploadedFile'),
(req, res, next) => {
console.log('REQ', req)
req.feathers.file = req.file
next()
}
)
事情是这样的:如果我只把file
作为补丁的主体,它工作得很好,我会像预期的那样在中间件中有一个req.file对象,但是,对于我在示例中显示的PATCH
对象,我没有req.file
对象。我做错了什么?我想保留我的文件以及姓名和年龄字段
请记住,如果我把它分成两个调用,它的工作原理与预期的一样。要使其正常工作,它当前看起来如下所示:
// This code is the only way I can make my patches work:
const file = new FormData()
file.append('uploadedFile', uploadedFile, uploadedFile.name)
const patch = {
name: 'Some Name',
age: 18,
}
return Promise.all([
isomorphicFetch(`${MY_URL}`, {
headers: {
Accept: 'application/json'
},
method: 'PATCH',
body: patch
}),
isomorphicFetch(`${MY_URL}`, {
headers: {
Accept: 'application/json'
},
method: 'PATCH',
body: file
})
])
更新:我试着通过邮递员来做这件事,事实上它确实起了作用。所以我现在更困惑了。和邮递员一起试试。这可能是有关修补程序的服务器端配置问题。说得好。在邮递员身上,这一切都如期而至。问题不在客户方面吗?但这可能是什么配置呢?有什么想法吗?把邮递员的要求和你的比较一下。文件和表单数据之间可能缺少MIME头或其他内容。请与Postman一起尝试。这可能是有关修补程序的服务器端配置问题。说得好。在邮递员身上,这一切都如期而至。问题不在客户方面吗?但这可能是什么配置呢?有什么想法吗?把邮递员的要求和你的比较一下。文件和表单数据之间可能缺少MIME头或其他内容。