Laravel 5 axios/laravel/formdata post请求为空

Laravel 5 axios/laravel/formdata post请求为空,laravel-5,vuejs2,axios,form-data,Laravel 5,Vuejs2,Axios,Form Data,我想上传一些文件,但当我使用axios发布时,我的formdata在laravel中是一个空请求 vuejs:uploader.vue filesChange(e) { const fileList = e.target.files; const formData = new FormData(); if (!fileList.length) return; for (let i = 0; i < fileList.length; i += 1) {

我想上传一些文件,但当我使用axios发布时,我的formdata在laravel中是一个空请求

vuejs:uploader.vue

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);
  },
vuejs:photosApi.js

storePhotos(formData, id) {
    return axios.post(`api/photo/${id}`, formData);
},
当我检查我的api调用时,我看到

laravel:api.php

Route::post('/photo/{id}',  'PhotoController@store');
laravel:PhotoController.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());
现在,当您检查apicall时,您可以看到一些有用的东西

现在很容易

$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);
}

尝试返回json响应。@pdshah3690也为空,返回响应()->json($request->all())@打印部分($request->all());您可以检查数据
for (let i = 0; i < fileList.length; i += 1) {
    formData.append('files[]', fileList[i], fileList[i].name);
}
$files = $request->file('files');