web-dev-qa-db-ja.com

laravel 5.3のストレージパスをパブリックに変更する方法は?

laravel 5.3では、フォームからファイルをアップロードすると、独自のストレージディレクトリに保存されます。次に、パブリックパスにそのストレージパスへのsymlinkを作成する必要があります。

制限があるため、システムでシンボリックリンクを作成できません。 public/uploadsではなくstorage/app/uploadsに直接ファイルをアップロードするにはどうすればよいですか?

AppServiceProvider.phpにパスを設定しようとしましたが、機能しません。

public function register()
{
    //not working:
    $this->app->useStoragePath( $this->app->basePath() .  "/upload");

    //also not working:
    // $this->app->bind('path.storage', function () {
    // return $this->app->basePath() . '/upload';
    // });

}

「動作していない」とは、デフォルトのストレージディレクトリにアップロードしていることを意味します。キャッシュもクリアしました。

これはアップロード部分です(コントローラーで使用されます):

        $request->image->storeAs("uploads", "uploaded_image.jpg");

ヒントをありがとう。 :)

12
MilMike

Laravel 5では、これをconfig/filesystems.phpで行う必要があります。次のように新しいディスクを追加できます:

'disks' => [

    'uploads' => [
          'driver' => 'local',
          'root'   => public_path(), // previously storage_path();
    ],

]

それを使用するには、次のようにします。

Storage::disk('uploads')->put('filename', $file_content);
21
Geoherna