Я обращаюсь к моему серверу с просьбой исправить некоторые обычные поля формы, а также загрузить изображение.
Если я делаю это отдельно в отдельных запросах, все работает отлично, но ничего не работает, если данные формы ифайл находится в том же запросе.Вот как это выглядит в настоящее время:
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
в качестве теламой PATCH, он работает просто отлично, у меня будет объект 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
})
])
Обновление: я попытался сделать это через Почтальон, и это действительно сработало.Так что теперь я еще больше запутался.