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");
ヒントをありがとう。 :)
Laravel 5では、これをconfig/filesystems.php
で行う必要があります。次のように新しいディスクを追加できます:
'disks' => [
'uploads' => [
'driver' => 'local',
'root' => public_path(), // previously storage_path();
],
]
それを使用するには、次のようにします。
Storage::disk('uploads')->put('filename', $file_content);