例として、カスタムValidatorクラスを使用できます。
基本的にフォームの検証を行うコントローラがあります。そして、あなたは、コントローラでファイルをダウンロードして、ディスクやデータベースへのすべてのメタデータに保存することができます
<?php
namespace App\Providers;
use Config;
use Illuminate\Support\ServiceProvider;
use Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('file_link', 'App\Validators\[email protected]','File Link should be valid url and contain file');
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
:
<?php
namespace App\Validators;
class FileLinkValidator
{
public function validate($attribute, $value, $parameters, $validator)
{
$isValid = false;
$ch = curl_init($value);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$allowedContentTypes = [
'image/jpeg'
];
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
if(in_array($contentType,$allowedContentTypes)){
$isValid = true;
}
}
curl_close($ch);
return $isValid;
}
}
登録バリ:
<?php
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Validator;
class ArticleController extends Controller
{
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store($id = 0)
{
$rules = [
'title' => 'required',
'body' => 'required',
'fileLink' => 'file_link',
];
$validator = Validator::make(Input::all(), $rules);
// process the login
if ($validator->fails()) {
return redirect()
->route('article.create')
->withErrors($validator);
} else {
//Other code
}
}
}
その後、カスタムバリデータを作成する必要があります。しかし、ユーザーの安全性を高めるためには、別のレベルの検証を実行する必要があります。
こんにちは、お返事ありがとうございます。別のレベルの検証ではどういう意味ですか? – comos234
サーバーにファイルをダウンロードして保存する場合にのみ必要です。したがって、実際にダウンロードしたビデオや画像ではなく、他の種類のファイルであることを確認する必要があります。 –