2017-06-01 103 views
0

我得到了一個表單,它將許多輸入字段驗證到Laravel 5的控制器中,其中有name="arquivos[]"<input>字段。我想像我一樣在一個步驟中解決所有的驗證問題,但它似乎是因爲它正在接收文件而不是一個文件而失敗。形式的代碼是:如何驗證mime在laravel 5中上傳多個文件?

{!! Form::open(['route' => 'posts.store', 'enctype' => 'multipart/form-data']) !!} 
...other inputs 
{{ Form::file('arquivos[]', array('class' => 'novo-post-form-item', 'required'=>'','multiple' => '')) }} 
{!! Form::close() !!} 

在我posts.store功能:

$this->validate($request, array(
     'arquivos' => 'required|mimes:image/jpeg,image/png,image/gif,video/webm,video/mp4,audio/mpeg', 
     'assunto' => 'max:255', 
     'conteudo' => 'required|max:65535' 
    )); 

注:我不知道爲什麼在我驗證必須沒有[]指定輸入名字,但它的工作方式...

這個問題是類似於我在堆棧溢出這裏發現的一些,但這次我問是否有解決方案Laravel 5。看起來,這種方法正在期待一個單一的文件輸入字段。在此先感謝

回答

3

請仔細閱讀Laravel文檔。這真的很有幫助

要驗證陣列字段,你需要這個:https://laravel.com/docs/5.4/validation#validating-arrays

此外我認爲你要使用mimetypes驗證規則,因爲mimes驗證規則接受的文件擴展名作爲參數:https://laravel.com/docs/5.4/validation#rule-mimetypes

而且解決問題的方法:

$this->validate($request, array(
     'arquivos.*' => 'required|mimetypes:image/jpeg,image/png,image/gif,video/webm,video/mp4,audio/mpeg', 
     'assunto' => 'max:255', 
     'conteudo' => 'required|max:65535' 
    )); 
+0

謝謝,這幫助了很多,雖然現在它在驗證中失敗。如果我運行'file --mime-type filename',它會返回與我在'validate'上放置的MIME類型相同的MIME類型,但它無法通過驗證並且不允許繼續......我在代碼上做了什麼錯誤? – Fabiotk

+1

我更新了我的答案,我想你想要'''mimetypes'''驗證規則。 – aceraven777