2016-10-04 28 views
5

Tôi làm cách nào để tải lên nhiều tệp trong Laravel 5.3. Nếu tôi thử nó với 1 hình ảnh nó hoạt động nhưng nhiều hình ảnh không được tải lên.Laravel 5.3 tải lên nhiều tệp

Đây là mã của tôi:

if($request->hasFile('attachment')) 
{ 
    foreach ($request->allFiles('attachments') as $file) { 
     $file->store('users/' . $user->id . '/messages'); 
    } 
} 
+1

làm bạn thêm Form :: file ('myfile []', ['multiple' => 'multiple']); – channasmcs

+0

Tôi đang thử nghiệm với người đưa thư. Vì vậy, có tôi đã làm điều đó. – Jamie

+0

@Jamie làm thế nào để bạn lưu các đường dẫn bây giờ để DB ?? – lewis4u

Trả lời

9

tại Nó hoạt động như thế này:

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

if($request->hasFile('attachment')) 
{ 
    foreach ($files as $file) { 
     $file->store('users/' . $this->user->id . '/messages'); 
    } 
} 

tôi phải chắp thêm [] sau khi giá trị của thuộc tính name, vì vậy:

<input type="file" name="attachment[]" multiple> 
+2

rằng những gì tôi đề cập đến trong câu hỏi của bạn Biểu mẫu :: tệp ('tệp đính kèm []', ['nhiều' => 'nhiều']); – channasmcs

+0

Nhưng điều này không làm việc cho tôi. chỉ tệp mới nhất đang được tải lên –

+0

@Jamie 'attachment []' không được hiển thị trong mã của bạn? Bạn có nghĩa là nó nên được? –

1

Hãy thử một số điều như thế này:

public function multiple_upload() { 
    // getting all of the post data 
    $files = Input::file('images'); 

    // Making counting of uploaded images 
    $file_count = count($files); 

    // start count how many uploaded 
    $uploadcount = 0; 

    foreach($files as $file) { 
     $rules = array('file' => 'required'); 

     //'required|mimes:png,gif,jpeg,txt,pdf,doc' 

     $validator = Validator::make(array('file'=> $file), $rules); 

     if($validator->passes()){ 
      $destinationPath = 'uploads'; 
      $filename = $file->getClientOriginalName(); 
      $upload_success = $file->move($destinationPath, $filename); 
      $uploadcount ++; 
     } 
    } 
} 

Upload multiple files in laravel - Documentation

+0

Cảm ơn nhưng điều này không phải là với các tính năng mới tắt Laravel 5.3 phải không? – Jamie

+0

https://laravel.com/docs/5.3/filesystem#file-uploads – Jamie

0

Nếu bạn muốn vẫn làm việc với lưỡi bạn có thể sử dụng này:

{{ Form::open(array('url' => 'upload', 'files'=>true)); }} 
{{ Form::file('gallery[]', array('multiple'=>true,'accept'=>'image/*')); }} 
{{ Form::submit(); }} 
{{ Form::close(); }} 

Và trong điều khiển của bạn:

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

if($request->hasFile('gallery')) 
{ 
    foreach ($files as $file) { 
     // $file->store('users/' . $this->user->id . '/messages'); 
     //dump($file); 
    } 
}