COOKIE
laravel在底层会对cookie值进行加密,并且使用授权码进行签名。所以,如果客户端修改了cookie值,那么就会失效。这样,我们就不用担心cookie伪造问题。
设置cookie值
设置cookie值会用到laravel响应(Response)的知识,这里简单带过。
可以使用cookie函数来创建cookie,然后再通过response函数将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值可以由两种方法,下面演示这两种方法:
use Illuminate\Http\Request; $value = $request->cookie('name'); // 或 use Illuminate\Support\Facades\Cookie; $value = Cookie::get('name');
获取上传的文件
laravel框架获取上传的文件及保持文件非常的简单。
获取上传的文件有两种方法,使用file方法或动态属性方法。该方法返回Illuminate\Http\UploadedFile实例。
$logo = $request->file('logo'); // or $logo = $request->logo;
当然可在获取文件前判断该文件是否存在,这里使用hasFile方法:
if ($request->hasFile('logo')) {
$logo = $request->file('logo');
}request请求实例还能对上传的文件进行验证,我们非常推荐在保存文件前进行此操作:
if ($request->file('logo')->isValid()) {
//
}uploadFile实例有许多方法,可以获取上传文件的零时保存路径、扩展名等信息。下面演示获取文件类型后缀
$logo = $request->file('logo'); $logo->path(); // png
最后,将如何保存文件,保存文件使用store方法,该方法的有两个参数,第一个参数填写保存文件的路径,第二个参数填写文件保存在哪个主目录中(或第三方平台里)。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"
}
}Atas ialah kandungan terperinci laravel的HTTP请求:获取cookie及上传的文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Pengenalan kepada komponen laravel
Pengenalan kepada perisian tengah laravel
Apakah corak reka bentuk yang digunakan oleh laravel?
Mana satu lebih mudah, thinkphp atau laravel?
Tutorial Laravel
Bagaimana untuk mematikan komputer anda dengan cepat
Apakah yang berlaku apabila alamat ip tidak tersedia?
Adakah OnePlus atau Honor lebih baik?