Загрузка файла Laravel с вложенными данными формы возвращает пустой массив файлов в запросе [POSTMAN]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрузка файла Laravel с вложенными данными формы возвращает пустой массив файлов в запросе [POSTMAN]

Сообщение Anonymous »

Я работаю над API Laravel, который позволяет пользователям загружать файлы как часть вложенного запроса данных формы. Однако файлы не обнаруживаются должным образом в запросе. Ниже приведены мои текущие настройки:
Структура запроса:
Запрос отправляется в виде данных формы с помощью Postman. Вот структура:
  • skill_type (строка): требуется
  • skill_description (строка): требуется
  • портфели (массив): необязательно
Каждое портфолио включает в себя:
  • описание (строка): необязательно
  • файлы (массив загруженных файлов): необязательно
Правила проверки запроса формы Laravel:

Код: Выделить всё

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'),
]);
}
Файлы прикрепляются в Postman как данные формы с именами полей, заданными как:
  • 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.
    Как предложил @C3roe, я также сбросил $_FILE и получил массив файлов, выбранных в почтальоне, как:< /li>

Код: Выделить всё

"file": {
"portfolios": {
"name": [
{
"files": [
"c-sm.jpg"
]
},
{
"files": [
"c-sm.jpg"
]
}
],
"full_path": [
{
"files": [
"c-sm.jpg"
]
},
{
"files": [
"c-sm.jpg"
]
}
],
"type": [
{
"files": [
"image/jpeg"
]
},
{
"files": [
"image/jpeg"
]
}
],
"tmp_name": [
{
"files": [
"C:\\Users\\...\\AppData\\Local\\Temp\\phpE252.tmp"
]
},
{
"files": [
"C:\\Users\\...\\AppData\\Local\\Temp\\phpE253.tmp"
]
}
],
"error": [
{
"files": [
0
]
},
{
"files": [
0
]
}
],
"size": [
{
"files": [
2701
]
},
{
"files": [
2701
]
}
]
}
},
ПРОВЕРКА ФАЙЛОВ

Код: Выделить всё

'portfolios' => 'nullable|array',
'portfolios.*.files' => 'nullable|array',
'portfolios.*.files.*' => 'file|mimes:jpg,jpeg,png,pdf|max:2048',
Ожидаемое поведение: Массив file_inputs должен содержать сведения о загруженном файле (например, исходное_имя, mime_type, размер и т. д.) для каждого прикрепленного файла.
Вопрос: Почему файлы в моем вложенном запросе данных формы не обнаруживаются Laravel и как я могу это исправить, чтобы правильно обрабатывать загрузку файлов с помощью вложенного массива структура?

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»