COOKIE
Laravel will encrypt the cookie value at the bottom layer and use the authorization code for signature. Therefore, if the client modifies the cookie value, it will become invalid. This way, we don't have to worry about cookie forgery.
Setting the cookie value
Setting the cookie value will use the knowledge of laravel response (Response), which is briefly mentioned here.
You can use the cookie function to create a cookie, and then return the cookie to the client through the response function:
// cookie($name, $value, $minutes, $path, $domain, false, ...); $cookie = cookie('username', 'php.cn', 3600); return response('hello laravel')->cookie($cookie);
In addition to using the cookie function, you can also use the cookie method of the response instance to set and return . The parameters of this method and cookie function are consistent.
return response('Hello World')->cookie( 'name', 'php.cn', 3600 );
Get the cookie value
There are two ways to get the cookie value. These two methods are demonstrated below:
use Illuminate\Http\Request; $value = $request->cookie('name'); // 或 use Illuminate\Support\Facades\Cookie; $value = Cookie::get('name');
Get uploaded files
The laravel framework is very simple to get uploaded files and save files.
There are two ways to get the uploaded file, use the file method or the dynamic attribute method. This method returns an Illuminate\Http\UploadedFile instance.
$logo = $request->file('logo'); // or $logo = $request->logo;
Of course, you can determine whether the file exists before getting it. Here, use the hasFile method:
if ($request->hasFile('logo')) { $logo = $request->file('logo'); }
The request request instance can also verify the uploaded file. We highly recommend that you verify the uploaded file before saving it. Do this:
if ($request->file('logo')->isValid()) { // }
The uploadFile instance has many methods to obtain the temporary saving path, extension and other information of the uploaded file. The following demonstrates how to obtain the file type suffix
$logo = $request->file('logo'); $logo->path(); // png
Finally, how to save the file. Save the file using the store method. This method has two parameters. The first parameter fills in the path to save the file, and the second parameter fills in the file. In which home directory (or third-party platform) it is saved. Laravel will automatically generate a unique ID as the file name. This information is in the configuration file config/filesystems.php, as follows:
'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'), ], ],
If you want to set the file name for saving the price request file yourself, you need to use the storeAs method. The second parameter of this method is the file to be set. name.
$request->file('logo')->storeAs('img/logo', '1.png');
Finally, post a complete file upload code example:
html code is as follows:
<form method="post" action="/index?a=32" enctype="multipart/form-data"> @csrf <input type="file" name="logo" > <input type="submit" value="sub" /> </form>
save file code as follows:
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" } }
The above is the detailed content of laravel HTTP request: get cookies and uploaded files. For more information, please follow other related articles on the PHP Chinese website!