Laravel6で作成したアプリの画像保存にAmazon AWS S3を利用したいです。
AWS S3 アカウント作成 / S3バケット作成 / 環境変数の設定
を行い、
コントローラーに下記を記載
PHP
1 public function store(Request $request, Image $image, TwitterOAuth $twitter) 2 { 3 //AWS S3 保存処理 4 $file = $request->file('file'); 5 $path = Storage::disk('s3')->putFile('/', $file, 'public'); 6 $image->image = $path; 7 8 //ログインユーザーのIDを保存 9 $image->user_id = auth()->user()->id; 10 //タイトル保存処理 11 $image->title = request('title'); 12 13 //コメント保存処理 14 $image->comment = request('comment'); 15 16 $image->save(); 17 18 }
viewファイルは以下の様に書いています。
PHP
1 <img src="{{ Storage::disk('s3')->url($image->image) }}" alt="投稿画像" style="height:300px;"> 2
しかし、UPした画像がAWS S3に保存されません。
また、viewファイルのimgタグは
HTML
1<img src="https://アプリ名.s3.ap-northeast-1.amazonaws.com/画像ファイル名.jpeg" alt="投稿画像" style="height: 300px;">
と出力されています。
画像ファイル名.jpegはなぜか、過去の投稿のファイル名が入っています。
laravel DBへの保存もされておりません。
試した事。
AWS S3の管理画面から画像をアップロードし、UPした画像のオブジェクト URLを imgタグのsrc属性に代入してみるも、画像は表示されない。
Laravel Telescopeでログを確認すると、以下の様になっています。
POST /api/images status 500
GET /js/popper.js.map status 404
となっている事から投稿した画像が AWS S3に届いていない。
AWS S3に画像が保存されていないのでGETされていない。
と認識しています。( /js/popper.js.map がなんなのかよくわかっていません。。。)
AWS S3へ画像が保存できる様にするにはどうすればいいでしょうか?
また、AWS S3へ保存した画像をlaravel側で呼び出すにはどうすればいいでしょうか?
回答1件
あなたの回答
tips
プレビュー