Я пытаюсь отправить массив файлов вместе с некоторыми другими данными на сервер laravel, используя angular. Информация о файле устанавливается на стороне angular, и объект File находится там, когда данные публикуются. Однако если я просто верну запрос, данные файла будут удалены, и я получу пустой массив. С остальными моими данными все в порядке.
Мой сервисный код:
storeChecklistAnswers(checklistAnswers: ChecklistAnswersModel) {
return this.http
.post<any>(
`${environment.apiUrl}/checklist/answers/store`,
checklistAnswers,
{
reportProgress: true,
headers: new HttpHeaders().append(
'enctype',
'multipart/form-data'
)
}
)
.pipe(
catchError(error => {
console.log(error);
let errors;
if (error.error.errors) {
errors = {
message: error.message,
errors: Object.values(error.error.errors)
};
} else if (error.error.message) {
errors = {
message: error.error.message
};
} else {
errors = {
message:
'An unknown error has occured. Please refresh the application'
};
}
return throwError(errors);
}),
tap(resultData => {
return resultData;
})
);
}
В моем контроллере
return response()->json([
'data' => $request->all()
]);
Данные перед публикацией:
images: Array(1)
0:
file: File
name: "292588.jpg"
lastModified: 1568349822014
lastModifiedDate: Fri Sep 13 2019 06:43:42 GMT+0200 (South Africa Standard Time) {}
webkitRelativePath: ""
size: 282431
type: "image/jpeg"
__proto__: File
Фактический ответ
images: Array(1)
0:
file: []
Я пытался удалить заголовки, как предложено в некоторых ответах SO, но я получаю тот же результат, я также проверил file_uploads, upload_max_filesize, post_max_size в php .ini.
У меня заканчиваются идеи. Пожалуйста, кто-нибудь может указать мне в правильном направлении. Я не уверен, почему я не могу опубликовать файл?