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?IlluminateHttpRequest; $value?=?$request->cookie('name'); //?或 use?IlluminateSupportFacadesCookie; $value?=?Cookie::get('name');
獲取上傳的文件
laravel框架獲取上傳的文件及保持文件非常的簡單。
獲取上傳的文件有兩種方法,使用file方法或動態屬性方法。該方法返回IlluminateHttpUploadedFile實例。
$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代碼如下:
保存文件代碼如下:
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" ????} }