У меня были некоторые данные формы, которые я отправил как json, используя XMLHttpRequests. Это работало нормально, пока мне не понадобилось добавить какой-то загруженный файл в данные поста. Я сделал это с помощью https://developer.mozilla.org/en-US/docs/Web/API/FormData. Однако теперь обработка этих данных в Laravel усложняется. Я ищу лучшее решение для этого. Примеры:
Отправка только json
Раньше я отправлял что-то вроде этого:
const otherData = { field1: true, field2: null, field3: [1, 2, 3] };
axios.post('path/somewhere', otherData);
Это позволяет мне читать данные запроса в Laravel так же просто, как $request->field3
.
Отправка json и файла
Когда необходимо отправить файл, я использую что-то вроде этого:
const FormData = new FormData;
formData.append('myFile', someFile);
formData.append('otherData', JSON.stringify(otherData));
axios.post('path/somewhere', formData);
Но теперь в Laravel я не могу легко получить доступ к другим своим данным, таким как $request->otherData->field3
, поскольку $request->otherData
- это просто строка. Я также теряю другие удобства, такие как промежуточное программное обеспечение TrimStrings, и легкую проверку, например $request->validate(['field3' => 'required']);
, поскольку field3 больше не существует в запросе.