お世話になっております。
Laravel Framework 5.8.28
php バージョン PHP 7.3.6
laravelでフォームでpost時、画像投稿を行い、DBにimage_urlというファイル名でインサート登録しています。
そのデータの名称が、意図と違うものになってしまい、
表示ページでそのデータの取得する際に、取得する方法がわかりません。
ーーーーーーーーコードは以下のものです。ーーーーーーーーー
フォーム画面表示。
image_urlという名称で登録しています。
createアクションにpostしています。
php
1 2<form method="POST" action="{{ route('posts.create')}}" class="justify-content-center" enctype="multipart/form-data" > 3 {{ csrf_field() }} 4 5-略- 6 7<!--画像投稿--> 8 <div class="form-group"> 9 画像投稿 10 <div class="form-image_url"> 11 <input type="file" name="image_url"> 12 </div> 13 </div> 14 15 <button type="submit" class="btn btn-primary"> 16 {{__('Post')}} 17 </button> 18</form> 19
postコントローラー。PostsController.phpという名称です。
php
1 2namespace App\Http\Controllers; 3 4use Illuminate\Http\Request; 5use Illuminate\Support\Facades\Auth; 6use App\Post; 7 8 public function create(Request $request) 9 { 10 $post = new Post; 11 $time = date("YmdHis"); 12//画像名を「投稿日時_投稿ユーザーid.jpg」という名称で登録するため、 13//storeAsで登録。 14 $post->image_url = $request->image_url->storeAs('public/post_images', $time.'_'.Auth::user()->id.'.jpg'); 15 16 Auth::user()->posts()->save($post->fill($request->all())); 17 18 return redirect('/')->with('flash_message',__('Registered.')); 19 } 20} 21
上記のコードで、意図通り画像はstorageの中のapp/public/post_imagesの中に保管されます。(シンボリックリンクは設定済み)
例:20190720164627_2.jpg
ですが、DB側にはこの画像が下記のような名称で登録されます。
/private/var/folders/pv/zjg0833j4mn5hrrv6mz7z5sm0000gn/T/phpy1QVbp
この場合、DB側の画像名も任意でコントロールしたいです。
※ここでDB側のimage_urlに設定されたパスの名前と、実際の画像の名称が一緒ではないと、
別ページでDBからimage_urlを取得して表示画面側で画像のデータが取得できないという認識です。
お手数ですが、何とぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/21 04:20