laravel之获取请求数据、cookie、文件上传处理

本文详细介绍了在Laravel中如何处理HTTP请求,包括获取Request实例、请求URL和方法、请求数据、Cookie以及文件上传。通过依赖注入获取请求数据,如input('name'),并展示了如何处理查询字符串、JSON数据和旧输入。同时,讲解了如何从请求中读取和创建Cookie,以及处理上传文件的有效性和存储路径。
摘要由CSDN通过智能技术生成
1、获取Request请求实例
   laravel通过依赖注入的方式来获取当前http请求的实例,应该在控制器中引用 use Illuminate\Http\Request;
   a.普通型
   use Illuminate\Http\Request;
   public function store(Request $request){
      $name = $request->input('name');
      //...
   }
   b.依赖注入 & 路与参数
   有时我们需要在路由中获取参数

   Route::put('user/{id}','UserController@update');

   use Illuminate\Http\Request;
   public function update(Request $request,$id){
      //
   }

2、获取请求url以及请求方法
   a.获取请求路径
     Request实例提供方法获取请求的路径
     $uri = $request->path();//获取的是相对请求路径,相对于根目录
     $url = $request->url(); //获取的是绝对请求路径

     is方法可以验证传入的请求路径与指定规则是否匹配
     if(is('admin/*')){

     }
   b.获取请求的url
     $url = $request->url();//不带查询字符串
     $url = $request->fullUrl();//带查询字符串
   c.获取请求方法
     $method = $request->method(); //请求方法
     if($request->method('post')){
         //验证http请求方法与指定规则匹配
     }
3、获取请求数据
   3.1 获取当前输入
       a.获取所有输入数据
         $input = $request->all();
       b.获取指定输入值
         无论是什么动作,input都可以用来获取用户输入数据
         $name = $request->input('name');
         $name = $request->input('name','Lucy');// lucy 是默认值
         如果传输表单数据中包含数组形式的数据,可以使用点语法来获取数组
         $name = $request->input('product.*.name');
       c.从查询字符串获取输入
         $name = $quest->query('name');
         $name = $quest->query('name','lucy');
         $name = $quest->query(); //不输入参数,返回的是关联数组
       d.通过动态属性获取输入
         $name = $request->name;//laravel处理动态属性的优先级,先在请求的数据中查找,再到路由参数中查找
       e.获取json输入数据
         如果发送到应用程序的请求数据是json数据,只要在请求的 Content-Type 表头设置为 application/json ,就可以使用input方法访问json数据
         也可以使用点语法来获取数据
         $name = $request->input('user.name');
       f.获取部分输入数据
         only except 两种方法都接受数组或动态列表的参数
         $input = $request->only(['name','age']);
         $input = $request->only('name','age');
         $input = $request->except(['name']);
         $input = $request->except(['name']);
       g.确定是否存在输入值
         if($request->has('name')){
             // 使用 has 方法
         }
         if($request->has(['name','age'])){
             // has方法也接受数组参数
         }
         如果想要确定是否存在值并且不为空,可使用filled方法
         if($request->filled('name')){
              //
         }
3.2 获取旧输入
     a.将输入闪存至session
       $request->flash();
       $request->flashOnly(['username','email']);
       $request->flashExcept('password');
     b.闪存输入后重定向
       有时候需要将数据闪存至session后重定向到上一页,这时只需要在重定向方法后加上withInput即可
       return redirect('form')->withInput();
       return redirect('form')->withInput( $request()->flashExcept('password'));
     c.获取旧输入
       $username = $request->old('username');// request 实例的old方法
       {{ old('username') }} //blade模板中显示旧的输入 此处的old方法是全局辅助函数
4、cookies
   a.从请求中获取cookie,使用 request 实例的cookie方法
     $cookies = $request->cookie();//获取全部的cookie
     $name_cookie = $request->cookie('name');//获取单一cookie值
   b.将cookies附加到响应
     return $response('hello world')->cookie('name','value',$minutes);
   c.生成cookie实例
     $cookie = cookie('name','value',$times);
     return $response('hello world')->cookie($cookie);
5、文件
   a.获取上传文件
     $photo = $request->file('photo');// file方法
     $photo = $request->photo; // 动态属性
  b.确认请求中是否存在文件
     if( $request->hasFile('photo')){
         //hasFile方法验证请求中是否存在文件
     }
  c.验证上传文件是否有效
     if( $request->file('photo')->isValid() ){
         //isValid方法验证上传文件是否有效
     }
  d.文件路径和扩展名
    $path = $request->photo->path();
    $extension = $request->photo->extension();// extension方法会根据文件内容判断文件的后缀名,会与客户端的不一样
  e.存储上传文件
    $path = $request->photo->store('images');
    $path = $request->photo->store('images','s3');
    $path = $request->photo->storeAs('images','filename.jpg');
    $path = $request->photo->storeAs('images','filename.jpg','s3');



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值