2015-05-04 26 views
3

我試圖使用Laravel 5的Request外觀使用相同的密鑰上傳多個文件。從我在別處讀到的內容中,正確的方法是在不將參數傳遞給::file()方法的情況下調用Request::file()Laravel 5,嘗試多文件上傳,Request :: file()只返回最後一個文件?

但是,這似乎只返回請求中發送的最後一個文件。

POST /test/service/upload HTTP/1.1 
Host: www.****.dev 
X-CSRF-TOKEN: 2DQBuTuy50EELFen5vXFaOv1cyXICmAISUx8LoCS 
Cache-Control: no-cache 

----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="photo"; filename="10464005_10152969193248906_6272325120604924631_n.jpg" 
Content-Type: image/jpeg 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="photo"; filename="10458555_10152969192978906_1569926627111581344_n.jpg" 
Content-Type: image/jpeg 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="photo"; filename="10365774_10152969188498906_1884545544754633531_n.jpg" 
Content-Type: image/jpeg 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 

PHP

$files = Request::file(); 
    $names = []; 

    foreach ($files as $file) { 
     $names[] = $file->getClientOriginalName(); 
    } 
    return $names; 

響應

[ 
    "10365774_10152969188498906_1884545544754633531_n.jpg" 
] 

有什麼樣的configuratio的n或標題,我必須適當地爲這項工作設置?如果有幫助,這將是一個基於AJAX的請求,我一直使用谷歌瀏覽器擴展「郵差」來測試。

任何幫助將不勝感激!文件元素的

+0

嘗試將數組聲明爲name。 –

+1

並設置''multiple'=> true',例如:'{!! Form :: file('files []',array('multiple'=> true))!!} – manix

回答

8

使用數組作爲HTML一樣遵循

<input type="file" name="photo[]"> 
<input type="file" name="photo[]"> 

在表單中添加enctype屬性和laravel獲取文件使用的文件的鍵根據我跟隨它

$files = Request::file('photo'); 
    $names = []; 

    foreach ($files as $file) { 
     $names[] = $file->getClientOriginalName(); 
    } 
    return $names; 

應該管用。

+0

感謝您的答案,終於解決了! – AliBaba

+0

歡迎..保持學習和教學.. :) –

+0

這是絕對不能接受你的HTML中'multiple'屬性。 – tolgap