サーチ…


構成

ファイルシステム設定ファイルは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.txtstorage/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サーバーでシンボリックリンクを作成する方法は次のとおりです。

  1. SSHクライアント(例:PUTTY)を使用してWebサーバーに接続し、ログインします。

  2. 構文を使用してstorage / app / publicpublic / 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という名前のフォルダが作成されます)。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow