php laravel 文件上传 csrf 路由route name命名

9 篇文章 0 订阅
  • 通过echo生成的表格,貌似只能用方式3进行跨域
  • Route->name方法设置route名,在html里使用
  • 默认文件最大上传大小2m,修改upload_max_filesize (= 20M)后重启项目
//resources\views\test\v3.blade.php
//http://localhost:3000/public/v3
@extends('mytemplate.parent')
@section('part1')
<form method="post" action="{{ route('v4r') }}"   enctype="multipart/form-data">
    <!--  方式1:laravel 5.6 及以后版本,也是 csrf_field() 的简写 -->
    <!-- @csrf -->
    <!-- 方式2:laravel 5.6 以下老版本  -->
    <!-- {{ csrf_field() }} -->
    <!--  方式3:添加隐藏字段-->
    <input name="_token" type="hidden" value="<?php echo csrf_token();?>">
    <!-- 输出上面的 token 字符串 -->
    {{ csrf_token() }}
    <input type='text' name="id" value='enter name'/>
    <input type='file' name="file1"/>
    <input type='submit' value='Submit'/> 
</form>
@endsection
@section('part2')
<?php 
    echo '<form method="post" action="'.route('v4r').'" enctype="multipart/form-data">';
    echo '<input name="_token" type="hidden" value="'.csrf_token().'">';
    echo '<input type="text" name="id" value="enter name"/>';
    echo '<input type="file" name="file1"/>';
    echo '<input type="submit" value="Submit"/></form>';
?>
@endsection
//resources\views\test\v4.blade.php
@extends('mytemplate.parent')
@section('part1')
<?php
 var_dump($_REQUEST);
 echo '<br/>';
 var_dump($_FILES);
?>  
@endsection
@section('part2')
{{var_dump($_REQUEST)}}
{{ var_dump($_FILES)}}
<div>777</div>
@endsection
//routes\web.php
Route::get('/v3', [TestVIewController::class, 'v3'])->name('v3r');
// Route::match(['get', 'post'],'/v4', [TestVIewController::class, 'v4'])->name('v4r');
Route::post('/v4', [TestVIewController::class, 'v4'])->name('v4r');
//app\Http\Controllers\TestViewController.php
    public function v3(){
        return view('test.v3');
    }
    public function v4(Request $request){
        $fn = 'file1';
        if($request->hasFile($fn) && $request->file($fn)->isValid()) {
            $fname=md5(time()).rand(100,999).'.'.$request->file($fn)->getClientOriginalExtension();
            echo  $fname;
            //./upload会上传到\public\upload。不知道是不是因为url带了public
            // $request->file($fn)->move('./upload', $fname);
            $request->file($fn)->move(getcwd().'/upload', $fname);
        }else{
            echo $request->file($fn)->getError().'<br/>';
            echo $request->file($fn)->getErrorMessage().'<br/>';
        }
        return view('test.v4');
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值