intervention in Laravel 5.1をインストールしました。画像アップロードを使用し、次のようなサイズに変更します。
Route::post('/upload', function()
{
Image::make(Input::file('photo'))->resize(300, 200)->save('foo.jpg');
});
私が理解していないことは、介入がアップロードされた画像の検証をどのように処理するのですか?つまり、介入には既に組み込みのイメージ検証チェックが含まれていますか、またはLaravel Validation
を使用して手動で追加する必要があるファイルフォーマット、ファイルサイズ、など。?私は介入ドキュメントを読みましたが、laravelで介入を使用する場合の画像検証の動作に関する情報を見つけることができませんでした。
誰かが私を正しい方向に向けることができますか..
@maythamのコメントに感謝し、正しい方向を示してくれました。
私が見つけたのは、画像介入はそれ自体で検証を行わないということです。すべての画像検証は、アップロードのために画像の介入に渡される前に実行する必要があります。 image
やmime
型などのLaravelの組み込みバリデーターのおかげで、画像の検証が非常に簡単になりました。これは、ファイル入力をImage Interventionに渡す前に最初に検証する場所です。
介入を処理する前の検証者チェックImage
クラス:
Route::post('/upload', function()
{
$postData = $request->only('file');
$file = $postData['file'];
// Build the input for validation
$fileArray = array('image' => $file);
// Tell the validator that this file should be an image
$rules = array(
'image' => 'mimes:jpeg,jpg,png,gif|required|max:10000' // max 10000kb
);
// Now pass the input and rules into the validator
$validator = Validator::make($fileArray, $rules);
// Check to see if validation fails or passes
if ($validator->fails())
{
// Redirect or return json to frontend with a helpful message to inform the user
// that the provided file was not an adequate type
return response()->json(['error' => $validator->errors()->getMessages()], 400);
} else
{
// Store the File Now
// read image from temporary file
Image::make($file)->resize(300, 200)->save('foo.jpg');
};
});
お役に立てれば。
単に、これを統合して検証を取得します
$this->validate($request, ['file' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',]);
カスタムフォームがあり、このバリアントは機能しません。だから私は正規表現の検証を使用しました
このような:
client_photo' => 'required|regex:/^data:image/'
誰かに役立つかもしれない
サポートされている画像形式http://image.intervention.io/getting_started/formats
読み取り可能な画像形式は、選択したドライバー(GdまたはImagick)とローカル構成によって異なります。デフォルトでは、Intervention Imageは現在、次の主要な形式をサポートしています。
JPEG PNG GIF TIF BMP ICO PSD WebP
Gd✔️✔️✔️----✔️*
Imagick✔️✔️✔️✔️✔️✔️✔️✔️*
Makeメソッドのドキュメントを参照して、さまざまなソースから画像形式を読み取り、それぞれエンコードおよび保存して画像を出力する方法を確認する方法を確認してください。
注:(Intervention ImageはオープンソースですPHP画像処理および操作ライブラリhttp:// image.intervention.io/ )。このライブラリは検証ルールを検証せず、Larvalによって行われましたValidator class
Laravel Doc https://laravel.com/docs/5.7/validation
ヒント1:(リクエストの検証)
$request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'publish_at' => 'nullable|date',
]);
// Retrieve the validated input data...
$validated = $request->validated(); //laravel 5.7
ヒント2:(コントローラーの検証)
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}