Структура запроса:
Запрос отправляется в виде данных формы с помощью Postman. Вот структура:
- skill_type (строка): требуется
- skill_description (строка): требуется
- портфели (массив): необязательно
- описание (строка): необязательно
- файлы (массив загруженных файлов): необязательно
Код: Выделить всё
public function rules(): array
{
return [
'skill_type' => 'required|string|max:255',
'skill_description' => 'required|string|max:2000',
'portfolios' => 'nullable|array',
'portfolios.*.files' => 'nullable|array',
'portfolios.*.files.*' => 'file|mimes:jpg,jpeg,png,pdf|max:2048',
];
}
Код: Выделить всё
public function register(StoreWorkerRequest $request): JsonResponse
{
$validatedData = $request->validated();
return response()->json([
'all_inputs' => $request->all(),
'file_inputs' => $request->file('portfolios'),
]);
}
- portfolios[0][files][] для первого файла в первом портфолио и
- portfolios[1][files][] для первого файла во втором портфолио .
Несмотря на правильное прикрепление файлов в Postman, ответ file_inputs в Laravel показывает пустые массивы для файлов. Ответ выглядит следующим образом:
Код: Выделить всё
{
"all_inputs": {
"skill_type": "Compete",
"skill_description": "Insane designer",
"portfolios": [
{
"description": "Portfolio 1 description",
"files": [{}]
},
{
"description": "Portfolio 2 description",
"files": [{}]
}
]
},
"file_inputs": [
{
"files": [{}]
},
{
"files": [{}]
}
]
}
- Убедился, что заголовок Content-Type не установлено вручную в Postman (Postman автоматически устанавливает значение multipart/form-data).
- Проверено, что файлы правильно прикрепляются в разделе данных формы Postman.
- Использованы $request->all() и $request->file(). для проверки входных данных в Laravel.
Вопрос: Почему файлы в моем вложенном запросе данных формы не обнаруживаются Laravel, и как я могу это исправить правильно обрабатывать загрузку файлов со структурой вложенного массива?
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-request