반응형
axios/larabel/formdata 게시 요청이 비어 있습니다.
파일을 업로드하고 싶은데, Axios로 투고하면 폼데이터가 larabel의 빈 요청입니다.
업로더표시하다
filesChange(e) {
const fileList = e.target.files;
const formData = new FormData();
if (!fileList.length) return;
for (let i = 0; i < fileList.length; i += 1) {
console.log(fileList[i]);
formData.append('files', fileList[i], fileList[i].name);
}
this.save(formData);
},
모든 파일이 루프되어 formData에 추가됩니다.
save(formData) {
photosApi.storePhotos(formData, this.galleryId).then((response) => {
console.log(response);
}).catch((error) => {
console.log(error);
});
},
vuejs: photosApi.js
storePhotos(formData, id) {
return axios.post(`api/photo/${id}`, formData);
},
api-call을 검사하면 이걸 볼 수 있어요.
larabel: api.disples
Route::post('/photo/{id}', 'PhotoController@store');
라라벨:포토 컨트롤러php
public function store(Request $request, $id)
{
return $request->all();
}
뭘 잘못하고 있는 거야?
드디어 해결했습니다:)
첫 번째 문제는 이 선이었다
formData.append('files', fileList[i], fileList[i].name);
append는 항상 마지막 "파일" 항목을 덮어씁니다...(완전히 효과가 있는 줄 알았어요)
그래서 첫 번째 해결책은
formData.append(`file${i}`, fileList[i], fileList[i].name);
데이터가 사용되지 않는 것을 확인하다
return $request->all();
대신 사용하다
print_r($request->all());
이제 아파콜을 검사하면 유용한 것을 볼 수 있습니다.
이제 그것은 쉬웠다
$data = $request->all();
foreach ($data as $key => $file) {
$file->move('/public/images', $file->getClientOriginalName());
};
모든 파일이 폴더에 저장됩니다.
갱신: 「 「 」로 파일을 쓰면, 데이터도 어레이로서 취득할 수 있습니다.
for (let i = 0; i < fileList.length; i += 1) {
formData.append('files[]', fileList[i], fileList[i].name);
}
또, 컨트롤러에서는, 이 행으로 파일에 액세스 할 수 있습니다만, 「」는 사용하지 않습니다.
$files = $request->file('files');
언급URL : https://stackoverflow.com/questions/46681010/axios-laravel-formdata-post-request-is-empty
반응형
'programing' 카테고리의 다른 글
C에서 + 연산자는 이렇게 구현됩니까? (0) | 2022.08.27 |
---|---|
약속을 어기다 (0) | 2022.08.14 |
Java List.add() 지원되지 않는 조작예외. (0) | 2022.08.14 |
Java 컴파일러와 JVM은 어떤 언어로 작성됩니까? (0) | 2022.08.14 |
Java를 사용한 두 날짜 사이의 일 수 계산 (0) | 2022.08.14 |