ホームページ > 記事 > PHPフレームワーク > laravel HTTP リクエスト: Cookie とアップロードされたファイルを取得する
COOKIE
Laravel は最下層で Cookie 値を暗号化し、署名に認証コードを使用します。したがって、クライアントが Cookie の値を変更すると、Cookie の値は無効になります。こうすることで、Cookie の偽造を心配する必要がなくなります。
Cookie 値の設定
Cookie 値の設定には、ここで簡単に説明されている、laravel 応答 (Response) の知識が使用されます。
cookie 関数を使用して cookie を作成し、応答関数を通じてその cookie をクライアントに返すことができます。
// cookie($name, $value, $minutes, $path, $domain, false, ...); $cookie = cookie('username', 'php.cn', 3600); return response('hello laravel')->cookie($cookie);
cookie 関数の使用に加えて、応答インスタンスの cookie メソッドを設定して返します。このメソッドと Cookie 関数のパラメータは一貫しています。
return response('Hello World')->cookie( 'name', 'php.cn', 3600 );
Cookie 値の取得
Cookie 値を取得するには 2 つの方法があります。これらの 2 つの方法を以下に示します:
use Illuminate\Http\Request; $value = $request->cookie('name'); // 或 use Illuminate\Support\Facades\Cookie; $value = Cookie::get('name');
アップロードされたファイルの取得
laravel フレームワークは、アップロードされたファイルの取得とファイルの保存が非常に簡単です。
アップロードされたファイルを取得するには、ファイル メソッドと動的属性メソッドを使用する 2 つの方法があります。このメソッドは、Illuminate\Http\UploadedFile インスタンスを返します。
$logo = $request->file('logo'); // or $logo = $request->logo;
もちろん、ファイルを取得する前に、ファイルが存在するかどうかを判断できます。ここでは、hasFile メソッドを使用します:
if ($request->hasFile('logo')) { $logo = $request->file('logo'); }
リクエスト リクエスト インスタンスは、アップロードされたファイルを検証することもできます。
if ($request->file('logo')->isValid()) { // }
UploadFile インスタンスには、アップロードされたファイルの一時保存パス、拡張子、その他の情報を取得するためのメソッドが多数あります。以下は、ファイル タイプのサフィックス
$logo = $request->file('logo'); $logo->path(); // png
を取得する方法を示しています。最後に、ファイルを保存する方法を示します。store メソッドを使用してファイルを保存します。このメソッドには 2 つのパラメータがあります。最初のパラメータは、ファイルを保存するパスを入力します。 、2 番目のパラメータは、ファイルがどのホーム ディレクトリ (またはサードパーティ プラットフォーム) に保存されるかを指定します。 Laravel はファイル名として一意の ID を自動的に生成します。この情報は、次のように構成ファイル config/filesystems.php にあります:
'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), ], ],
価格リクエスト ファイルを保存するためのファイル名を自分で設定したい場合は、storeAs メソッドを使用する必要があります。このメソッドの名前は設定するファイルです。
$request->file('logo')->storeAs('img/logo', '1.png');
最後に、完全なファイル アップロード コード例を投稿します:
html コードは次のとおりです:
<form method="post" action="/index?a=32" enctype="multipart/form-data"> @csrf <input type="file" name="logo" > <input type="submit" value="sub" /> </form>
保存ファイル コードは次のとおりです:
if ($request->hasFile('logo')) { $logo = $request->file('logo'); if ($logo->isValid()) { $ext = $logo->extension(); $fileName = date('YmdHis') . mt_rand(10000,99999); $path = $logo->storeAs('img/logo', $fileName . '.' . $ext); dump($path); //"img/logo/2020121413351718218.png" } }
以上がlaravel HTTP リクエスト: Cookie とアップロードされたファイルを取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。