天天看點

Laravel的檔案上傳

#檔案上傳

Laravel的檔案系統是基于Frank de Jonge的Flysystem擴充包

提供了簡單的接口,可以操作本地端空間、AmazonS3、Rackspace Cloud Storage

可以非常簡單的切換不同的儲存方式,但仍使用相同的API操作

支援 local ftp s3 rackspace預設是local

s3是亞馬遜的配置,在國内用的很少

#1.配置

config/filesystems.php

'uploads' => [

//本地驅動

            'driver' => 'local',

//上傳的路徑

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

//            'root' => public_path('uploads'),

這裡一般都會寫在public目錄下面,因為好調用,好調試

        ],

//這是上傳的檔案大緻結果名字2333

../storage/app/uploads/2018-03-22-21-35-43-5ab3b12f49607.jpg

upload模闆

@extends('layouts.app')

@section('content')

<div class="container">

    <div class="row">

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

            <div class="panel panel-default">

                <div class="panel-heading">檔案上傳</div>

                <div class="panel-body">

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

                        {{ csrf_field() }}

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

                            <label for="file" 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>

                </div>

            </div>

        </div>

    </div>

</div>

@endsection

注意檔案上傳的格式enctype="multipart/form-data"

#2控制器的相關代碼

    public function upload(Request $request)

    {

        if($request->isMethod('POST'))

        {

//            var_dump($_FILES);

//            exit;

            $file = $request->file('source');

//            dd($file);

//            exit;

            //判斷檔案是否上傳成功

            if($file->isValid())

            {

                //原檔案名

                $originalName = $file->getClientOriginalName();

                //擴充名

                $ext = $file->getClientOriginalExtension();

                //檔案類型MImetype

                $type = $file->getClientMimeType();

                //檔案臨時絕對路徑

                $realPath = $file->getRealPath();

                //為了避免重名

                $filename = date('Y-m-d-H-i-s').'-'.uniqid().'.'.$ext;

                $bool = Storage::disk('uploads')->put($filename,file_get_contents($realPath));

                var_dump($bool);

            }

        }

        return view('student.upload');

    }