<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## ThinkPHP6使用七牛云存儲,不改代碼,改下配置就上七牛 [TOC] ### 介紹 `ThinkPHP6`中使用`flysystem`作為文件處理類,`flysystem`是一個php文件處理庫,可以使用相同的接口連接本地,ftp,ssh,dav,國外的各種oss,國內的各種oss等等,具體的可以搜索了解下. `ThinkPHP6`官方提供了本地的`flysystem`接入使用,但是沒有提供七牛云的使用,實際上,flysystem也沒有提供七牛云的接口,不過強大的php社區生態庫中,有人提供了七牛云接口(`overtrue/flysystem-qiniu`),可以直接使用. 實際上你完全可以只用這個接口去做文件處理,但是為了使代碼中文件操作統一,還是用統一的方式最好,本文就是介紹如何使用七牛云存儲,最終效果如下: ``` //官方文檔的使用方式 $savename = \think\facade\Filesystem::putFile( 'topic', $file); //接入七牛云的使用方式 $savename = \think\facade\Filesystem::disk('qiniu')->putFile('topic',$file); // 兩個返回的文件名均如下,不過第二個是在七牛云上 topic/20190728/1091d43200fdb27524311cf0dc2408d3.jpg ``` ### 開始接入 請先閱讀`ThinkPHP6`文檔,了解Tp6中`flysystem`的用法,[Tp6文件上傳](http://www.hmoore.net/manual/ThinkPHP6_0/1037639) #### 調用 可以如上面 演示,在調用時加上`disk`方法,傳入相應的配置名,也可以修改`filesystem.php`配置文件,默認調用改為`qiniu`. #### 依賴 ``` composer require overtrue/flysystem-qiniu ``` #### 配置 ``` return [ 'default' => Env::get('filesystem.driver', 'local'), 'disks' => [ 'local' => [ 'type' => 'local', 'root' => app()->getRuntimePath() . 'storage', ], 'public' => [ 'type' => 'local', 'root' => app()->getRootPath() . 'public/storage', 'url' => '/storage', 'visibility' => 'public', ], //增加下面配置項 'qiniu' =>[ //完全可以自定義的名稱 'type'=>'qiniu', //可以自定義,實際上是類名小寫 'accessKey' =>'d7FtmZgBzxxxQwEE', //七牛云的配置,accessKey 'secretKey'=>'lENEerxxxX9Us8DHtkDz8_HC',//七牛云的配置,secretKey 'bucket'=>'cwh5app', //七牛云的配置,bucket空間名 'domain'=>cwh5app.com' //七牛云的配置,domain,域名 ] ], ]; ``` #### 封裝 Tp6中對`flysystem`做了封裝,主要是用工廠類調用和配置的調用,后面會介紹下原理,現在只需要這樣做: 創建文件`/extend/think/filesystem/driver/Qiniu.php`. 嚴格按照這樣創建,Tp6會自動加載. ``` <?php namespace think\filesystem\driver; use League\Flysystem\AdapterInterface; use think\filesystem\Driver; use Overtrue\Flysystem\Qiniu\QiniuAdapter; class Qiniu extends Driver { protected function createAdapter(): AdapterInterface { return new QiniuAdapter( $this->config['accessKey'], $this->config['secretKey'], $this->config['bucket'], $this->config['domain'] ); } } ``` #### 完工 找個方法測試測試 ``` public function save(Request $request) { // 獲取表單上傳文件 例如上傳了001.jpg $file = request()->file('file'); dump($file); $savename = Filesystem::disk('qiniu')->putFile('data',$file); dump($savename); } ``` ### 原理 Tp6中對`Filesystem`類做了封裝,使用`facade`調用,實際上就是用工廠類生成對象. Tp6中,生成類之前會讀取配置文件,找到打算實例化哪一個`驅動`,也就是配置文件中的`default`值,或者是傳入的`disk`方法的參數. tp6提供了本地的方式,你可以在核心框架里找到這個`Local`驅動,如果我們想使用其他的驅動,那就要自己實現驅動,這個驅動返回一個基于`League\Flysystem\AdapterInterface`接口的對象即可. 所以如果我們想接入更多的存儲系統,就添加更多的驅動即可. #### 關于命名空間 Tp6工廠生成`filesystem`對象時,會實例化`\\think\\filesystem\\driver\\`.`$config['type']`,也就是命名空間拼接配置中的類名. 命名空間和文件位置無關,所以php既可以找到位于核心類庫中的`Local`驅動,也可以找到位于`extend`下的`Qiniu`驅動. ### 總結 這種方式還是十分方便的,可以隨意接入更多的存儲系統,無需修改任何代碼. 當然,像七牛云,阿里OSS都有提供的瀏覽器直接上傳到空間的jssdk,這種功能是沒辦法"統一"了. ### 額外 這個七牛的庫,不僅實現了`flysystem`的功能,也可以`獲取token`,`獲取私鏈下載地址`等功能,屬于擴展功能,可以去這里了解.[packagist](https://packagist.org/packages/overtrue/flysystem-qiniu).
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看