[ Laravel 5.2 ドキュメント ] サービス -- ファイルシステム/クラウドストレージ
1. はじめに
Laravel は、Frank de Jonge によって開発された、強力なファイル システム抽象化を提供する PHP パッケージ Flysystem に基づいています。 Laravel ファイル システムの統合により、Amazon S3 や Rackspace クラウド ストレージなどのドライバーを使用してローカル ファイル システムを簡単に使用できるようになります。さらに、API はどのシステムでも同じであるため、これらのストレージ オプションの切り替えは簡単です。
2. 構成
ファイルシステム構成ファイルは config/filesystems.php にあります。すべての「ハード ドライブ」はこのファイルで構成でき、各ハード ドライブは特定のストレージ ドライブとストレージの場所を記述します。サポートされている各ドライバーのサンプル構成は構成ファイルに含まれているため、構成を編集してストレージ パラメーターと認証情報を反映するだけです。
もちろん、必要なだけディスクを構成でき、複数のディスクで同じドライバーを共有することもできます。
ローカル ドライバー
ローカル ドライバーを使用する場合、すべてのファイル操作は構成ファイルで定義されたルート ディレクトリを基準とすることに注意してください。デフォルトでは、この値はストレージ/アプリに設定されます。したがって、次の方法ではファイルを 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 ハードディスク インスタンスを取得する
ストレージ ファサードは、構成するすべてのディスクと対話するために使用されます。ファサードで put メソッドを使用してアバターをデフォルトのディスクに保存できます。ストレージ ファサードでメソッドを呼び出して最初にディスク メソッドを呼び出すと、メソッド呼び出しは自動的にデフォルトのディスクに渡されます:
<?phpnamespace 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()) ); }}
複数のディスクを使用する場合、ストレージ ファサードのメソッドを使用して、特定のディスクにアクセスします。もちろん、メソッド チェーンを使用してディスク上でメソッドを実行し続けることもできます。
$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 Store file
put メソッド ファイルをディスクに保存するために使用されます。 PHP リソースを put メソッドに渡すと、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 メソッドを使用すると、簡単に次のことができます。ファイルの先頭にコンテンツを挿入します /Ending:
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);
ディレクトリの下にあるすべてのサブディレクトリを取得します。
directory メソッドは、指定されたディレクトリの下にあるすべてのディレクトリの配列を返します。さらに、allDirectories メソッドを使用して、ネストされたすべてのサブディレクトリを取得できます。 ディレクトリ配列:
$directories = Storage::directories($directory);// 递归...$directories = Storage::allDirectories($directory);
ディレクトリの作成
makeDirectory メソッドは、サブディレクトリを含む指定されたディレクトリを (再帰的に) 作成します。 :
Storage::makeDirectory($directory);
ディレクトリの削除
最後に、 deleteDirectory メソッドを使用して、ディレクトリ内のすべてのファイルを含むディレクトリを削除します。
Storage::deleteDirectory($directory);
4 . カスタム ファイル システム
Laravel の Flysystem 統合はカスタム ドライバーをサポートしています。カスタム ファイル システムをセットアップするには、DropboxServiceProvider などのサービス プロバイダーを作成する必要があります。プロバイダーのブート メソッドでは、ストレージ ファサードの extend メソッドを使用してカスタム ドライバーを定義できます。
<?phpnamespace 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 メソッドの最初のパラメーターはドライバー名で、2 番目のパラメーターは取得するものです。 $app と $config 変数のクロージャー。パーサー クロージャは、LeagueFlysystemFilesystem インスタンスを返す必要があります。 $config 変数には、特定のディスクの構成ファイル config/filesystems.php で定義されたオプションが含まれています。
サービス プロバイダーを作成して拡張機能を登録した後、構成ファイル config/filesystem.php で Dropbox ドライバーを使用できるようになります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
