как отправить файл на бек вместе с дополнительными полями?
у меня есть формочка на странице. когда файл добавляется в input:file то файл оттуда (инстанс класса File) добавляется в FormData и input:file очищается для дальнейшего выбора нового файла. при добавлении файла делается следующее
const addFileToList = (inputFile) => {
const formData = new FormData()
const uploadedFile = inputFile.files[0] // файл из инпута File{...}
const uploadedFileWrapper = {}
uploadedFileWrapper.file = uploadedFile
uploadedFileWrapper.foo = 'foo'
uploadedFileWrapper.bar = 'bar'
formData.append('files[]', uploadedFileWrapper)
clearInputForm()
axios.post('localhost://foobarbaz/upload-file', formData)
}
и вот при отправке запроса на бек приходит структура вида
"files" => array:1 [
0 => "[object Object]"
]
потом я попробовал сделать так
formData.append('files[]', JSON.stringify(uploadedFileWrapper))
и получил это
"files" => array:2 [
0 => "{"file":{}, "foo": "foo", "bar": "bar"}"
]
т.е. файл опять пустой файл. ну и я ожидаю получить на беке такой результат
"files" => array:1 [
0 => [
"file" => UploadedFile...,
"foo" => "foo",
"bar" => "bar",
],
]
ну увы у меня не получается. ну вот и вот вопрос как отправить на бек файл вместе с дополнительными полями которые привязаны к загружаемому файлу?
p.s. реально очень интересно. попробуйте сами так объект с файлом отправить на бек
Источник: Stack Overflow на русском