天天看点

laravel 文件上传

文件上传

Laravel的文件系统是基于Frankde Jonge的Flysystem扩展包

提供了简单的接口,可以操作本地端空间,Amazons3,Rackspace Cloud Storage

可以非常简单的切换不同保存方式,但仍使用相同的API操作

配置文件

1.Config/filesystems.php

    'disks' => [

        'local' => [

            'driver' => 'local',

            'root' => storage_path('app'),

        ],

        'public' => [

            'driver' => 'local',

            'root' =>storage_path('app/public'),

            'visibility' => 'public',

        ],

                     //新建立一个uploads

        'uploads' =>[

            'driver' => 'local',

            //storage_path对应的是目录下storage

            'root' =>storage_path('app/uploads'),

            'visibility' => 'public',

        ],

        's3' => [

            'driver' => 's3',

            'key' => 'your-key',

            'secret' => 'your-secret',

            'region' => 'your-region',

            'bucket' => 'your-bucket',

        ],

],

2.view

<form class="form-horizontal" method="POST" action="" enctype="multipart/form-data">

    {{csrf_field() }}

    <div class="form-group{{$errors->has('password') ? ' has-error' : '' }}">

        <label for="password" class="col-md-4 control-label">请选择文件</label>

        <div class="col-md-6">

            <input id="file" type="file" class="form-control" name="source" required>

        </div>

    </div>

    <div class="form-group">

        <div class="col-md-8 col-md-offset-4">

            <button type="submit" class="btn btn-primary">

                确认上传

            </button>

        </div>

    </div>

</form>

3.controllers

public function upload(Request $request)
{
    if($request->isMethod('POST')) {
        //print_r($_FILES);
        //source表单名
       $file = $request->file('source');
       //文件是否上传成功
       if($file->isValid()) {
           //取原文件名
           $originalName = $file->getClientOriginalName();
           //取扩展名
           $ext = $file->getClientOriginalExtension();
           //取文件类型
           $type = $file->getClientMimeType();
           //临时文件的绝对路径
           $realPath = $file->getRealPath();
           //定义文件名
           $fileName = date("YmdHis"). '-' . uniqid(). '.' . $ext;
           //uploads为config/filesystems里自定义
           $bool = Storage::disk('uploads')->put($fileName, file_get_contents($realPath));
           print_r($bool);exit;
       }
    }
    return view('student.upload');
}