サーチ…
構成
ファイルシステム設定ファイルはconfig/filesystems.php
。このファイル内で、すべての "ディスク"を構成することができます。各ディスクは特定のストレージドライバとストレージの場所を表します。サポートされている各ドライバの構成例が構成ファイルに含まれています。そのため、ストレージの設定と資格情報を反映するように設定を変更するだけです!
S3またはRackspaceドライバを使用する前に、適切なパッケージをComposer経由でインストールする必要があります。
- Amazon S3:
league/flysystem-aws-s3-v2 ~1.0
- Rackspace:
league/flysystem-rackspace ~1.0
もちろん、必要な数のディスクを構成し、同じドライバを使用する複数のディスクを使用することもできます。
ローカルドライバを使用する場合は、すべてのファイル操作が、設定ファイルで定義されているルートディレクトリからの相対パスであることに注意してください。デフォルトでは、この値はstorage/app directory
設定されていstorage/app directory
。したがって、次の方法ではファイルをstorage/app/file.txt
にstorage/app/file.txt
します。
Storage::disk('local')->put('file.txt', 'Contents');
基本的な使用法
Storage
ファサードは、構成済みのディスクとの対話に使用できます。または、Laravelサービスコンテナを介して解決されたクラスで、 Illuminate\Contracts\Filesystem\Factory
タイプヒントすることもできます。
特定のディスクを取得する
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
ファイルが存在するかどうかの判断
$exists = Storage::disk('s3')->exists('file.jpg');
デフォルトディスク上のメソッドの呼び出し
if (Storage::exists('file.jpg'))
{
//
}
ファイルの内容を取得する
$contents = Storage::get('file.jpg');
ファイルの内容を設定する
Storage::put('file.jpg', $contents);
ファイルに追加する
Storage::prepend('file.log', 'Prepended Text');
ファイルに追加する
Storage::append('file.log', 'Appended Text');
ファイルを削除する
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
ファイルを新しい場所にコピーする
Storage::copy('old/file1.jpg', 'new/file1.jpg');
ファイルを新しい場所に移動する
Storage::move('old/file1.jpg', 'new/file1.jpg');
ファイルサイズを取得する
$size = Storage::size('file1.jpg');
最終変更時刻を取得する(UNIX)
$time = Storage::lastModified('file1.jpg');
ディレクトリ内のすべてのファイルを取得する
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
ディレクトリ内のすべてのディレクトリを取得する
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
ディレクトリを作成する
Storage::makeDirectory($directory);
ディレクトリを削除する
Storage::deleteDirectory($directory);
カスタムファイルシステム
LaravelのFlysystemインテグレーションは、いくつかの「ドライバー」のためのドライバーを提供します。ただし、Flysystemはこれらに限定されず、他の多くのストレージシステム用のアダプタを備えています。 Laravelアプリケーションでこれらの追加のアダプタの1つを使用する場合は、カスタムドライバを作成できます。心配しないで、それほど難しいことではありません!
カスタムファイルシステムを設定するには、 DropboxFilesystemServiceProvider
などのサービスプロバイダを作成する必要があります。プロバイダのboot
メソッドでは、 Illuminate\Contracts\Filesystem\Factory
インスタンスを挿入し、挿入されたインスタンスのextend
メソッドを呼び出すことがextend
ます。または、 Disk
ファサードのextend
メソッドを使用することもできます。
extend
メソッドの最初の引数はドライバの名前で、2番目の引数は$app
および$config
変数を受け取るClosureです。リゾルバクロージャは、 League\Flysystem\Filesystem
インスタンスを返さなければなりません。
注意:$ config変数には、指定したディスクの
config/filesystems.php
定義されている値がすでに含まれています。 Dropboxの例
<?php namespace App\Providers;
use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Support\ServiceProvider;
class DropboxFilesystemServiceProvider extends ServiceProvider {
public function boot()
{
Storage::extend('dropbox', function($app, $config)
{
$client = new DropboxClient($config['accessToken'], $config['clientIdentifier']);
return new Filesystem(new DropboxAdapter($client));
});
}
public function register()
{
//
}
}
SSHを使用したWebサーバーでのシンボリックリンクの作成
Laravelのドキュメントでは、ファイルをWebからアクセス可能にするために、public / storageからstorage / app / publicへのシンボリックリンク(シンボリックリンクまたはソフトリンク)を作成する必要があります。
(この手順は、ララベルのプロジェクトディレクトリ内にシンボルのリンクを作成します)
SSHクライアントを使用してLinux Webサーバーでシンボリックリンクを作成する方法は次のとおりです。
SSHクライアント(例:PUTTY)を使用してWebサーバーに接続し、ログインします。
構文を使用してstorage / app / publicをpublic / storageにリンクする
ln -s target_path link_path
例(CPanelファイルディレクトリ内)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(フォルダアイコンのインジケータ>>>とpathをリンクするためにstorageという名前のフォルダが作成されます)。