ホームページ  >  記事  >  PHPフレームワーク  >  laravel HTTP リクエスト: Cookie とアップロードされたファイルを取得する

laravel HTTP リクエスト: Cookie とアップロードされたファイルを取得する

齐天大圣
齐天大圣オリジナル
2020-12-14 21:44:571769ブラウズ

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(&#39;logo&#39;)) {
    $logo = $request->file(&#39;logo&#39;);
    if ($logo->isValid()) {
        $ext = $logo->extension();
        $fileName = date(&#39;YmdHis&#39;) . mt_rand(10000,99999);
        $path = $logo->storeAs(&#39;img/logo&#39;, $fileName . &#39;.&#39; . $ext);
        dump($path); //"img/logo/2020121413351718218.png"
    }
}

以上がlaravel HTTP リクエスト: Cookie とアップロードされたファイルを取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。