現在s3にファイルを保存することはできたのですが、できれば->getClientOriginalName()を使って名前を指定して保存したいと考えてます。
ですがメソッドを使うとファイル名 doesnt existと出ます。
公式から$contents = Storage::get('file.jpg');を見つけてここから呼び出すのかとパスを合わせても同様のエラーとなりました。
fileはpublic内に保存されてるのは確認済みです。
controller public function store(Request $request, Book $book, Tag $tag) { $user = auth()->user(); $data = $request->all(); $file_name = $request->file('book_image')->getClientOriginalName(); $request->file('book_image')->storeAs('/public/book_image',$file_name); $book_image = Storage::disk('s3')->putFile('book_image', $file_name, 'public'); $data["book_image"] = Storage::disk('s3')->url($book_image); $validator = Validator::make($data,[ 'title' => ['string', 'max:30'], 'author' => ['string', 'max:30'], ]); $validator->validate(); $book->bookStore($data); return redirect('/books')->with('success', '投稿が完了しました。'); }
一応 config/filesystems.phpですが直す必要はないと思ってます。 <?php return [ /* |-------------------------------------------------------------------------- | Default Filesystem Disk |-------------------------------------------------------------------------- | | Here you may specify the default filesystem disk that should be used | by the framework. The "local" disk, as well as a variety of cloud | based disks are available to your application. Just store away! | */ 'default' => env('FILESYSTEM_DRIVER', 'local'), /* |-------------------------------------------------------------------------- | Default Cloud Filesystem Disk |-------------------------------------------------------------------------- | | Many applications store files both locally and in the cloud. For this | reason, you may specify a default "cloud" driver here. This driver | will be bound as the Cloud disk implementation in the container. | */ 'cloud' => env('FILESYSTEM_CLOUD', 's3'), /* |-------------------------------------------------------------------------- | Filesystem Disks |-------------------------------------------------------------------------- | | Here you may configure as many filesystem "disks" as you wish, and you | may even configure multiple disks of the same driver. Defaults have | been setup for each driver as an example of the required options. | | Supported Drivers: "local", "ftp", "sftp", "s3" | */ '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_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), ], ], /* |-------------------------------------------------------------------------- | Symbolic Links |-------------------------------------------------------------------------- | | Here you may configure the symbolic links that will be created when the | `storage:link` Artisan command is executed. The array keys should be | the locations of the links and the values should be their targets. | */ 'links' => [ public_path('storage') => storage_path('app/public'), ], ];
どなたか知見のある方ご教授をよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。