• 技术文章 >php框架 >Laravel

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

    齐天大圣齐天大圣2020-12-15 09:28:14原创529
    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"
        }
    }

    以上就是laravel的HTTP请求:获取cookie及上传的文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:laravel
    上一篇:laravel的HTTP请求:获取输入信息 下一篇:laravel创建响应、设置响应头、重定向等
    大前端线上培训班

    相关文章推荐

    • laravel框架里.env文件与config目录下配置文件关系• laravel中.env文件的作用• laravel的表单伪造与CSRF保护• laravel的HTTP请求:获取输入信息

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网