2017-06-01 9 views
0

多くの入力フィールドをLaravel 5のコントローラに検証するためのフォームがあります。その中にファイルname="arquivos[]"<input>があります。 1つのステップですべてのバリデーションを解決したいと思っていますが、ファイルを受け取っていて配列が1つではなく、それが失敗しているようです。フォームのコードは次のとおりです。laravel 5で複数のファイルをアップロードするためにmimeを検証する方法は?

{!! 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。このように、このvalidateメゾスは単一のファイル入力フィールドを期待しています。事前に感謝します

答えて

3

Laravelのドキュメントを完全に読んでください。本当に便利です

アレイフィールドを検証するには、https://laravel.com/docs/5.4/validation#validating-arraysが必要です。 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

おかげで、たくさんの助けになりましたが、

はまた、私はあなたがmimes検証規則は、ファイルパラメータとして拡張を受け入れるためmimetypes検証ルールを使用したいと思います検証では失敗しています。 'file --mime-type filename'を実行すると、私は' validate'に置かれた同じMIMEタイプを返しますが、検証に失敗して処理を続行できません...コードに何か間違っていますか? – Fabiotk

+1

私は自分の答えを更新しました。あなたは '' mimetypes''の検証ルールが必要だと思います。 – aceraven777

関連する問題