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

2022-05-15 0 183

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"    }}

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 laravel的HTTP请求:获取cookie及上传的文件 https://www.jike1995.com/36302.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务