2016-07-23 99 views
0

我想存儲文件數組,但我有一些問題,這是我的HTML代碼laravel文件存儲陣列的

<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 
<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 

和我的控制器

foreach ($request->input('text') as $key => $step){ 
$data = new Step; 
if($request->hasFile('tmp[$key]'){ 
$file = $request->tmp[$key]; 
    $extension = $file->getClientOriginalExtension(); 
    $file_name = strval(time()).str_random(5).'.'.$extension; 

    $destination_path = public_path().'/step-upload/'; 
    $data->img_url = $file_name; 
    $upload_success = $file->move($destination_path, $file_name); 

} 
$data->text=$step; 

,但它沒有工作,我發現api不支持hasFile(數組),它只支持hasFile(string $ key)

並且我刪除if($ request-> hasFile('tmp [$ key]'){}但找到不管有多少輸入文件,它只能捕獲第一個文件有沒有解決方法?

回答

3

假設您的HTML實際上是正確的,並且您在form上使用了正確的enctype。

Laravel使用它的點標註功能在hasFile功能。所以,你想要做的就是用('tmp.' . $key)代替'tmp[$key]'(這是不正確,read up opon double vs single quotes)。

所以,你的代碼應該是這樣的:

foreach ($request->input('text') as $key => $step) { 
    if ($request->hasFile('tmp.' . $key)) { 
     $file = $request->file('tmp.' . $key); 
     // work with $file 
    } 
} 
+0

謝謝!是工作!欣賞! –