2017-11-20 20 views
0

私はパブリックフォルダstorage/app/public/にファイルを保存しようとしていますが、何らかの理由でLaravelがプライベートstorage/app/フォルダに入れたようです。Laravel 5.5 - パブリックフォルダにアップロード

私が正しく理解していれば、私は単に「公共」に可視性を設定することになってるが、それは何も変更していないようだ。

Storage::put($fileName, file_get_contents($file), 'public'); 

私はgetVisibilityを呼び出すときにそれが動作しているようですので、私は公共の取得罰金:

Storage::getVisibility($fileName); // public 

これらは私のfilesystems.phpで設定されている:

'disks' => [ 

    'local' => [ 
     'driver' => 'local', 
     'root' => storage_path('app'), 
    ], 

    'public' => [ 
     'driver' => 'local', 
     'root' => storage_path('app/public'), 
     'url' => env('APP_URL').'/storage', 
     'visibility' => 'public', 
    ], 

    's3' => [ 
     'driver' => 's3', 
     'key' => env('AWS_KEY'), 
     'secret' => env('AWS_SECRET'), 
     'region' => env('AWS_REGION'), 
     'bucket' => env('AWS_BUCKET'), 
    ], 

], 

答えて

1

Storage::putに電話すると、Laravelはデフォルトのディスクである 'local'を使用します。

ローカルディスクには、ルートにファイルが保存されます(storage_path('app'))。可視性は、ファイルを格納する場所とは何も関係ありません。あなたは、そのルートにファイルを格納しますpublicディスクを選択する必要があり

storage_path('app/public'),

ことを行うには、ファイルをアップロードするときに使用するディスクLaravelを伝える必要があります。基本的には、このようにコードを変更します。

Storage::disk('public')->put($fileName, file_get_contents($file), 'public');

+0

おかげで、これは動作します! しかし、私はまだputメソッドの 'public'引数が何をしているのか理解していません。私はそれを省略することができます(またはそれを 'プライベート'として設定することもできます)。すべてがうまくいきます。私は混乱します。P –

+1

amazon s3をディスクとして使用しているときにvisibility引数が便利です。これはファイルの可視性を設定します(公開されているかどうかに関係なく、ローカルディスクを使用している場合は効果がありません)。 – Hamoud