laravelとvueを使用して画像複数枚投稿を実装しています。
解決したいこと
データベースに保存するのは画像へのパスにしたい。(現状は画像本体が保存されます)
下記の様な形でstoreを実行したいのですが、下記がうまくいきません。
$path = $image->store('public');
$imageの値がおかしいと予想しています。
public function create(CreateMe $request) { dd(request()->all()); $user = Auth::user(); $me = new Me(); $me->user_id = $user->id; $me->content = $request->content; $lists = explode(',', $request->images); $me->save(); $image_list = []; foreach ($lists as $image) { $img = new Image(); // $path = $image->store('public'); ここがうまく実行されない $read_temp_path = str_replace('public/', 'storage/', $image); <-ほんとは$pathにしたい $img->src = $read_temp_path; array_push($image_list, $img); } $me->images()->saveMany($image_list); return redirect()->route('post_index'); }
$request->imagesの中身(vueから送られてきます) $request->images => "5e0bf*.jpg,69CA5A*.JPG" ここからexplodeで分けて処理してます。 なのでforeachでの$imageの値は下記の形(ファイル名)になっています。 5e0bf*.jpg $path = $image->store('public');だと message: "Call to a member function store() on string"が表示されてしまいます。おそらくobjectが求められているのだと思います。
$path = $image->store('public');
現状では上記の様な形で$pathを作成できる様にしたいのですが,$imageがstringと言われてしまっています。ファイル名が直接入っているのがよくなさそうです。
storeを実行するにはどの様な処理を書けば良いでしょうか?
もしくはそもそも$request->imagesの中身だとstoreは出来ないと言うことなのでしょうか?
どなたか知恵をお貸ししていただきたいです。
よろしくお願いします。
laravel6.18
vue.js 2.6.11
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/09 21:51