Maison> cadre php> Laravel> le corps du texte

laravel的HTTP请求:获取cookie及上传的文件

齐天大圣
Libérer: 2020-12-15 09:28:14
original
1723 Les gens l'ont consulté

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);
Copier après la connexion

除了使用cookie函数外,还可以使用响应实例的cookie方法设置并返回。该方法和cookie函数的参数是一致的。

return response('Hello World')->cookie( 'name', 'php.cn', 3600 );
Copier après la connexion

获取cookie值

获取cookie值可以由两种方法,下面演示这两种方法:

use Illuminate\Http\Request; $value = $request->cookie('name'); // 或 use Illuminate\Support\Facades\Cookie; $value = Cookie::get('name');
Copier après la connexion

获取上传的文件

laravel框架获取上传的文件及保持文件非常的简单。

获取上传的文件有两种方法,使用file方法或动态属性方法。该方法返回Illuminate\Http\UploadedFile实例。

$logo = $request->file('logo'); // or $logo = $request->logo;
Copier après la connexion

当然可在获取文件前判断该文件是否存在,这里使用hasFile方法:

if ($request->hasFile('logo')) { $logo = $request->file('logo'); }
Copier après la connexion

request请求实例还能对上传的文件进行验证,我们非常推荐在保存文件前进行此操作:

if ($request->file('logo')->isValid()) { // }
Copier après la connexion

uploadFile实例有许多方法,可以获取上传文件的零时保存路径、扩展名等信息。下面演示获取文件类型后缀

$logo = $request->file('logo'); $logo->path(); // png
Copier après la connexion

最后,将如何保存文件,保存文件使用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'), ], ],
Copier après la connexion

如果想自己设置保存问价文件的文件名,需要使用storeAs方法,该方法的第二个参数是要设置的文件名。

$request->file('logo')->storeAs('img/logo', '1.png');
Copier après la connexion

最后,贴出一个完整的文件上传的代码示例:

html代码如下:

@csrf
Copier après la connexion

保存文件代码如下:

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" } }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!