<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### **1、簡介** [Laravel](http://laravelacademy.org/tags/laravel "View all posts in Laravel")?基于 Frank de Jonge 開發的 PHP 包?[Flysystem](https://github.com/thephpleague/flysystem)?提供了強大的[文件系統](http://laravelacademy.org/tags/%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f "View all posts in 文件系統")抽象。Laravel?[文件](http://laravelacademy.org/tags/%e6%96%87%e4%bb%b6 "View all posts in 文件")系統集成提供了使用驅動處理本地文件系統的簡單使用,這些驅動包括[Amazon S3](http://laravelacademy.org/tags/amazon-s3 "View all posts in Amazon S3"),以及?[Rackspace](http://laravelacademy.org/tags/rackspace "View all posts in Rackspace")?[云存儲](http://laravelacademy.org/tags/%e4%ba%91%e5%ad%98%e5%82%a8 "View all posts in 云存儲")。此外在這些[存儲](http://laravelacademy.org/tags/%e5%ad%98%e5%82%a8 "View all posts in 存儲")選項間切換非常簡單,因為對每個系統而言,API 是一樣的。 ### **2、配置** 文件系統配置文件位于`config/filesystems.php`。在該文件中可以配置所有”硬盤“,每個硬盤描述了特定的存儲驅動和存儲位置。為每種支持的驅動的示例配置包含在該配置文件中,所以,簡單編輯該配置來反映你的存儲參數和認證信息。 當然,你想配置磁盤多少就配置多少,多個磁盤也可以共用同一個驅動。 ##### **本地驅動** 使用`local`驅動的時候,注意所有文件操作相對于定義在配置文件中的`root`[目錄](http://laravelacademy.org/tags/%e7%9b%ae%e5%bd%95 "View all posts in 目錄"),默認情況下,該值設置為`storage/app`目錄,因此,下面的方法將會存儲文件到`storage/app/file.txt`: ~~~ Storage::disk('local')->put('file.txt', 'Contents'); ~~~ ##### **其它驅動預備知識** 在使用Amazon S3或Rackspace驅動之前,需要通過Composer安裝相應的包: * Amazon S3:?`league/flysystem-aws-s3-v3 ~1.0` * Rackspace:?`league/flysystem-rackspace ~1.0` ### **3、基本使用** #### **3.1 獲取硬盤實例** `Storage`[門面](http://laravelacademy.org/post/2920.html)用于和你配置的所有磁盤進行交互,例如,你可以使用該門面上的put方法來存儲頭像到默認磁盤,如果你調用`Storage`門面上的方法卻先調用`disk`方法,該方法調用自動傳遞到默認磁盤: ~~~ <?php namespace App\Http\Controllers; use Storage; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserController extends Controller{ /** * 更新指定用戶頭像 * * @param Request $request * @param int $id * @return Response */ public function updateAvatar(Request $request, $id) { $user = User::findOrFail($id); Storage::put( 'avatars/'.$user->id, file_get_contents($request->file('avatar')->getRealPath()) ); } } ~~~ 使用多個磁盤時,可以使用`Storage`門面上的`disk`方法訪問特定磁盤。當然,可以繼續使用方法鏈執行該磁盤上的方法: ~~~ $disk = Storage::disk('s3'); $contents = Storage::disk('local')->get('file.jpg') ~~~ #### **3.2 獲取文件** `get`方法用于獲取給定文件的內容,該方法將會返回該文件的原生字符串內容: ~~~ $contents = Storage::get('file.jpg'); ~~~ `exists`方法用于判斷給定文件是否存在于磁盤上: ~~~ $exists = Storage::disk('s3')->exists('file.jpg'); ~~~ ##### 文件元信息 `size`方法以字節方式返回文件大小: ~~~ $size = Storage::size('file1.jpg'); ~~~ `lastModified`方法以UNIX時間戳格式返回文件最后一次修改時間: ~~~ $time = Storage::lastModified('file1.jpg'); ~~~ #### **3.3 存儲文件** `put`方法用于存儲文件到磁盤。可以傳遞一個PHP資源到`put`方法,該方法將會使用[Flysystem](http://laravelacademy.org/tags/flysystem "View all posts in Flysystem")底層的流支持。在處理大文件的時候推薦使用文件流: ~~~ Storage::put('file.jpg', $contents); Storage::put('file.jpg', $resource); ~~~ `copy`方法將磁盤中已存在的文件從一個地方拷貝到另一個地方: ~~~ Storage::copy('old/file1.jpg', 'new/file1.jpg'); ~~~ `move`方法將磁盤中已存在的文件從一定地方移到到另一個地方: ~~~ Storage::move('old/file1.jpg', 'new/file1.jpg'); ~~~ ##### **添加內容到文件開頭/結尾** `prepend`和`append`方法允許你輕松插入內容到文件開頭/結尾: ~~~ Storage::prepend('file.log', 'Prepended Text'); Storage::append('file.log', 'Appended Text'); ~~~ #### **3.4?刪除文件** `delete`?方法接收單個文件名或多個文件數組并將其從磁盤移除: ~~~ Storage::delete('file.jpg'); Storage::delete(['file1.jpg', 'file2.jpg']); ~~~ #### **3.5 目錄** ##### **獲取一個目錄下的所有文件** `files`方法返回給定目錄下的所有文件數組,如果你想要獲取給定目錄下包含子目錄的所有文件列表,可以使用`allFiles`方法: ~~~ $files = Storage::files($directory); $files = Storage::allFiles($directory); ~~~ ##### **獲取一個目錄下的所有子目錄** `directories`方法返回給定目錄下所有目錄數組,此外,可以使用`allDirectories`方法獲取嵌套的所有子目錄數組: ~~~ $directories = Storage::directories($directory); // 遞歸... $directories = Storage::allDirectories($directory); ~~~ ##### **創建目錄** `makeDirectory`方法將會創建給定目錄,包含子目錄(遞歸): ~~~ Storage::makeDirectory($directory); ~~~ ##### **刪除目錄** 最后,`deleteDirectory`方法用于移除目錄,包括該目錄下的所有文件: ~~~ Storage::deleteDirectory($directory); ~~~ ### **4、自定義文件系統** Laravel 的 Flysystem 集成支持自定義驅動,為了設置自定義的文件系統你需要創建一個[服務提供者](http://laravelacademy.org/post/2900.html)如`DropboxServiceProvider`。在該提供者的`boot`方法中,你可以使用`Storage`門面的`extend`方法定義自定義驅動: ~~~ <?php namespace App\Providers; use Storage; use League\Flysystem\Filesystem; use Dropbox\Client as DropboxClient; use Illuminate\Support\ServiceProvider; use League\Flysystem\Dropbox\DropboxAdapter; class DropboxServiceProvider extends ServiceProvider{ /** * Perform post-registration booting of services. * * @return void */ public function boot() { Storage::extend('dropbox', function($app, $config) { $client = new DropboxClient( $config['accessToken'], $config['clientIdentifier'] ); return new Filesystem(new DropboxAdapter($client)); }); } /** * Register bindings in the container. * * @return void */ public function register() { // } } ~~~ `extend`方法的第一個參數是驅動名稱,第二個參數是獲取`$app`和`$config`變量的閉包。該解析器閉包必須返回一個`League\Flysystem\Filesystem`實例。$config變量包含了定義在配置文件`config/filesystems.php`中為特定磁盤定義的選項。 創建好注冊[擴展](http://laravelacademy.org/tags/%e6%89%a9%e5%b1%95 "View all posts in 擴展")的服務提供者后,就可以使用配置文件`config/filesystem.php`中的`dropbox`驅動了。
                  <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>

                              哎呀哎呀视频在线观看