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


    • 通过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="">
        <!-- 输出上面的 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 '
    .route('v4r').'" enctype="multipart/form-data">'; echo '.csrf_token().'">'; echo ''; echo ''; echo ''
    ; ?> @endsection
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    //resources\views\test\v4.blade.php
    @extends('mytemplate.parent')
    @section('part1')
    <?php
     var_dump($_REQUEST);
     echo '
    '
    ; var_dump($_FILES); ?> @endsection @section('part2') {{var_dump($_REQUEST)}} {{ var_dump($_FILES)}} <div>777</div> @endsection
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    //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');
    
    • 1
    • 2
    • 3
    • 4
    //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().'
    '
    ; echo $request->file($fn)->getErrorMessage().'
    '
    ; } return view('test.v4'); }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
    【愚公系列】2022年10月 微信小程序-优购电商项目-⾃定义组件传参
    ASP.NET Core + SaasKit + PostgreSQL + Citus 的多租户应用程序架构示例
    全链路压测(10):测试要做的准备工作
    自定义注解和@Target、@Retention注解的使用
    UBI文件系统的使用
    Technical Support Website Statement
    C-DS二叉树_另一棵树的子树
    浅谈哈希表
    Redis基础知识(四):使用redis-cli命令测试状态
  • 原文地址:https://blog.csdn.net/weixin_43292547/article/details/126071474