Laravel5でアップロードされたファイルをチェックするValidatorを作成する
Laravel5のカスタムバリデーターを作成するのが思いのほか簡単だったのでメモ
zipファイルの中に対象のファイルが存在することをチェックするValidatorを作成します。
■CustomValidatorクラスの作成
\app\Validatorに作成する。
このValidatorでは、ZIPファイルの中にaaa.txtがあることを確認する。
配列$parametersの一番最初の要素にファイルのパスを設定してもらう
■App\Providers\AppServiceProviderのbootに追加
■Controllerにバリデート処理を追加
アップロードされたファイルのパスをValidatorのパラメータに設定します。
以上
とっても簡単でした。
Laravel5のカスタムバリデーターを作成するのが思いのほか簡単だったのでメモ
zipファイルの中に対象のファイルが存在することをチェックするValidatorを作成します。
■CustomValidatorクラスの作成
\app\Validatorに作成する。
このValidatorでは、ZIPファイルの中にaaa.txtがあることを確認する。
配列$parametersの一番最初の要素にファイルのパスを設定してもらう
use ZipArchive;
class CustomValidator
{
/**
* zipファイルの内容を確認
*
* @param unknown $attribute
* @param unknown $value
* @param unknown $parameters
* @return boolean
*/
public function validateCustomZipFile($attribute, $value, $parameters){
$adhtml = '';
$zipfile = $parameters[0];
$zip = new ZipArchive;
if ($zip->open($zipfile)){
$fp = $zip->getStream('aaa.txt');
if(!$fp){
// 失敗
return false;
}
}
return true;
}
}
■App\Providers\AppServiceProviderのbootに追加
use Validator; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // カスタムValidator Validator::extend('default_html', 'App\Validation\CustomValidator@validateCustomHtml'); } }
■Controllerにバリデート処理を追加
アップロードされたファイルのパスをValidatorのパラメータに設定します。
// バリデーションルール $custom_rules = ['file' => 'zip:'.$request->file('file')]; $custom_msg = ['file.zip' => 'zipファイルの中に対象のファイルがありません']; // バリデーション処理の呼び出し $v = Validator::make($request->all(), $custom_rules, $custom_msg); if ($v->fails()){ return redirect()->back() ->withInput() ->withErrors($v->errors()); }
以上
とっても簡単でした。