2016-06-28 15 views
3

ループ内の複数のファイルに対してLaravelファイル検証を使用するにはどうすればよいですか?ループ内での複数のファイル検証

は通常、単一のファイルの検証では、私はちょうど

$validator = Validator::make($request->all(),[ 
    'image' => 'image|max_width:1000|max_height:1000' 
]); 
if($validator->fails()){ 
    //validation fails 
} 

のように行うことができますが、今、私は、フロントエンド側のための今すぐ

//store to a variable 
$file = $request->file('image'); 
if($file){ //if request file image exist 
    foreach($request->file('image') as $i){ 
    //here, validate each file image, but it just I don't know how 
    } 
} 

のように、単一のプロセスで複数のファイルを検証します1つの投稿に複数のファイルを送信するプロセスについて詳しく説明します。バックエンドで

$(document).on("change",'input[type="file"]',function(){ 
    if($(this).val()!==""){ 
     var files = this.files; 
     handleFileUpload(files); 
     $(this).val(""); 
    } 
}); 

function handleFileUpload(files) 
{ 
    //create a formData 
    var fd = new FormData(); 
    //loop through e 
    for (var i = 0; i < files.length; i++) 
    { 
     //append each file object to the formData 
     fd.append('image[]', files[i]); 
    } 
    //this function is where ajax request will be process 
    sendFileToServer(fd); 
} 

と私は要求をダンプする場合、私は、これら

アレイ(2){[0] =>オブジェクト(を照らし\のHttp \にUploadedFile)#214(7を得ます); ["test": "Symfony \ Component \ HttpFoundation \ File \ UploadedFile":private] => bool(false) ["オリジナル名": "Symfony \ Component \ HttpFoundation \ File \ UploadedFile":プライベート] = > 文字列(50) "12400457_643171672489204_2452820305362127031_n.jpg" ["mimeType": "Symfony \ Component \ HttpFoundation \ File \ UploadedFile":プライベート] => int(18413) ["エラー": "Symfony \ Component \ HttpFoundation \ File \ UploadedFile"]: "画像サイズ:" Symfony \ Component \ HttpFoundation \ int "0" ["pathName": "SplFileInfo":private] =>文字列(25) "C:\ wmp64 \ tmp \ phpBAE4.tmp" ["fileName": " (11) "phpBAE4.tmp"} [1] => オブジェクト(Illuminate \ Http \ UploadedFile)#217(7){ ["test": "Symfony \ Component \ HttpFoundation"]:プライベート] => \ファイル\にUploadedFile ":(偽) [プライベート] => BOOL" ORIGINALNAME ":" のSymfony \コンポーネント\ HttpFoundationファイル\にUploadedFile \ ":プライベート] => 文字列(39) "13296200_702501119889592_55691535_n.jpg" ["ミムsymfony \ Component \ HttpFoundation \ File \ UploadedFile ":プライベート] => 文字列(10)" image/jpeg " ["サイズ ":" Symfony \ Component \ HttpFoundation \ File \ UploadedFile ":プライベート] > "SplFileInfo":private "=> string(25); int(95383) ["エラー ":" Symfony \ Component \ HttpFoundation \ File \ UploadedFile ":プライベート] => int "C:\ wamp64 \ TMP \ phpBAE5.tmp" [ "FILENAME": "はSplFileInfo":プライベート] => 文字列(11) "phpBAE5.tmp"}}

任意のアイデア、手がかり、ヘルプループ内の複数のファイルに対してLaravelファイル検証を使用する方法を教えてください。

PS:私は、あなたが以下試すことができLaravel 5.2

+0

はこちらですか? http://stackoverflow.com/questions/18079240/validating-multiple-file-uploads-with-laravel-4 – Ctc

答えて

0

配列としてimageファイル入力フィールドを送信し、その後、アレイの検証を使用してみてください。 Laravel 5.2を使用している場合は、配列バリデーションを使用してルールを作成するforeachループを削除できます。

まず、ファイル入力を配列として設定する必要があります。

あなたは1つの入力フィールド使用している場合:

<input type="file" name="image[]" multiple> 

をあなたの要求は、このような何かを探して通ってくるでしょう:

array:2 [▼ 
    "_token" => "oX3sTXPDnNiVj9mX20VOHe2xo1Ahx6sWzU4VHZxh" 
    "image" => array:2 [▼ 
    0 => UploadedFile {#147 ▶} 
    1 => UploadedFile {#146 ▶} 
    ] 
] 

次に、あなたのルールはバリの中で宣言されるだろう、アレイの検証を使用して配列フィールドを示すためにアスタリスク記号を利用することによって:

$validator = Validator::make($request->all(),[ 
    'image.*' => 'image|max_width:1000|max_height:1000' 
]); 

詳細については、こちらのドキュメントを確認してください。https://laravel.com/docs/5.2/validation#validating-arrays

+0

同じこと、同じアイデア、私はすでにそれを言及してくれてありがとう、それを適用しました。 –

+0

うれしいコーディングができてうれしいです! – haakym

0

上で実行しているよ:

foreach($this->input('image') as $key => $value){ 
     $rules['image.'.$key] = 'image|max_width:1000|max_height:1000'; 
    } 
関連する問題