2017-10-11 89 views
0

我想上传一些文件,但是当我与爱可信发布,我FORMDATA是laravel空请求爱可信/ laravel/FORMDATA职位的要求是空

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

从控制台输出,所有文件都被循环并追加到FORMDATA output from console, all files are looped and appended to 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的调用我看到这个 when i inspect my api-call i see this

laravel:api.php

Route::post('/photo/{id}', '[email protected]'); 

laravel:PhotoController.php

public function store(Request $request, $id) 
{ 
    return $request->all(); 
} 

返回我的响应只是空的... the return of my response is only empty...

什么im'doing错?

+0

尝试返回JSON响应。 –

+0

@ pdshah3690也返回空响应() - > json($ request-> all()); –

+0

@ParthShah with print_r($ request-> all());你可以检查数据 –

回答

1

我解决它终于:)

的第一个问题是这条线

formData.append('files', fileList[i], fileList[i].name); 

追加总是覆盖最后的“文件”项...(我认为这是工作像推)

所以先定盘

formData.append(`file${i}`, fileList[i], fileList[i].name); 

看到的数据不使用

return $request->all(); 

改用

print_r($request->all()); 

现在你可以看到一些有用的,当你检查你的apicall

enter image description here

现在很容易

$data = $request->all(); 
foreach ($data as $key => $file) { 
    $file->move('/public/images', $file->getClientOriginalName()); 
}; 

我所有的文件都存储在我的文件夹中;)

UPDATE: 我发现,如果我写有文件“[] “那么我也得到数据作为一个阵列

for (let i = 0; i < fileList.length; i += 1) { 
    formData.append('files[]', fileList[i], fileList[i].name); 
} 

在我控制我可以访问我的文件与这条线,但没有“[]”

$files = $request->file('files');