#angular #laravel #api #multipartform-data
Вопрос:
Я пытаюсь отправить некоторые данные полей и файл в серверную часть Laravel. Это работает, если я попробую api с почтальоном, но всегда показываю ошибку, когда отправляю его через Angular
HttpErrorResponse {headers: HttpHeaders, status: 422, statusText: 'Unprocessable Entity', url: 'http://127.0.0.1:8000/api/works', ok: false, …} error: errors: category: ['The category field is required.'] picture: ['The picture field is required.'] title: ['The title field is required.'] title_en: ['The title en field is required.'] title_uz: ['The title uz field is required.'] [[Prototype]]: Object message: "The given data was invalid." [[Prototype]]: Object headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ} message: "Http failure response for http://127.0.0.1:8000/api/works: 422 Unprocessable Entity" name: "HttpErrorResponse" ok: false status: 422 statusText: "Unprocessable Entity" url: "http://127.0.0.1:8000/api/works" [[Prototype]]: HttpResponseBase
Похоже, что Ларавель не видел никаких обязательных полей.
Угловая функция:
onSubmit() { const formData = new FormData() formData.append('title', this.worksForm.get('title')!.value) formData.append('title_en', this.worksForm.get('title_en')!.value) formData.append('title_uz', this.worksForm.get('title_uz')!.value) formData.append('category', this.worksForm.get('category')!.value) formData.append('description', this.worksForm.get('description')?.value) formData.append('description_en', this.worksForm.get('description_en')?.value) formData.append('description_uz', this.worksForm.get('description_uz')?.value) formData.append('picture', this.worksForm.get('picture')?.value) const headers = new HttpHeaders().append('Content-Type', ['multipart/form-data']); this.http.post(`${environment.apiUrl}works`, formData, { headers: headers } ).subscribe( (res) =gt; console.log(res), (err) =gt; console.log(err) ) }
Магазин Laravel()
public function store(Request $request) { $request-gt;validate([ 'title' =gt; 'required', 'title_en' =gt; 'required', 'title_uz' =gt; 'required', 'category' =gt; 'required', 'picture' =gt; 'required' ]); if ($file = $request-gt;file('picture')) { $name = $file-gt;getClientOriginalName(); $path = $request-gt;file('picture')-gt;storeAs('public/pictures', $name); $request['picture'] = $name; } $input = $request-gt;all(); $input['picture'] = $name; return Work::create($input); }
Я уже подумываю о том, чтобы попробовать какой-нибудь другой сервер… или в моем интерфейсе есть ошибки?
Я не нашел здесь никаких рабочих ответов на такую проблему.
Комментарии:
1. что вы видите на вкладке «Сеть разработчиков»?