Laravel 文件上传功能实现

作者: 泥豆芽儿MT | 来源:发表于2017-09-02 12:00 被阅读188次
    • 以Laravel 5.2.45 框架为主,进行文件上传功能的实现如下:


      没啥意思 我就是一个封面图而已

    1).配置文件修改

    • 打开 config/filesystems.php 文件
    • 在 'disks' 数组中添加如下代码
            //自定义
            'uploads' => [
                'driver' => 'local',
                //'root' => storage_path('app/uploads'),
                'root' => public_path('uploads/'.date('Ymd')),
            ],
    

    2).前端视图 upload.blade.php

    • 根据需求,设计简单的视图,核心代码如下
    
                <div class="panel panel-default">
                    <div class="panel-heading">文件上传</div>
                    <div class="panel-body">
                        <form class="form-horizontal" role="form" method="POST" action="" enctype="multipart/form-data">
                            {{ csrf_field() }}
    
                            <div class="form-group">
                                <label for="file" class="col-md-4 control-label">Hello world</label>
    
                                <div class="col-md-6">
                                    <input id="file" type="file" class="form-control" name="source">
                                </div>
                            </div>
    
    
    
                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">
                                        <i class="fa fa-btn fa-sign-in"></i> 上传
                                    </button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            
    

    3).控制器核心代码

    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Storage;
    
    //上传文件 功能实现方法
    public function upload(Request $request){
            if ($request->isMethod('POST')){
                $file = $request->file('source');
                //判断文件是否上传成功
                if ($file->isValid()){
                    //原文件名
                    $originalName = $file->getClientOriginalName();
                    //扩展名
                    $ext = $file->getClientOriginalExtension();
                    //MimeType
                    $type = $file->getClientMimeType();
                    //临时绝对路径
                    $realPath = $file->getRealPath();
                    $filename = uniqid().'.'.$ext;
                    $bool = Storage::disk('uploads')->put($filename,file_get_contents($realPath));
                    //判断是否上传成功
                    if($bool){
                        echo 'success';
                    }else{
                        echo 'fail';
                    }
                }
            }
            return view('upload');
        }
    

    4).执行上述方法结果

    • 通过调用上述方法,正确执行后,上传的文件将出现在 public/uploads 的对应日期目录下

    相关文章

      网友评论

        本文标题:Laravel 文件上传功能实现

        本文链接:https://www.haomeiwen.com/subject/bmoljxtx.html