実現したいこと
・一時保存場所storage/temp_pet_img/から本番保存場所storage/pet_img/に画像ファイルを移動したい
前提
ここに質問の内容を詳しく書いてください。
現在、Laravel10で登録フォームからアップロードされた画像をpublic/storage配下に保存し、画像のファイル名をデータベースに登録する処理を作っています。
画像アップロードシステムを、『フォームでアップロードした画像の名前を日時付きのオリジナル名にして、一時保存場所のstorage/temp_pet_img/フォルダ内に保存し、確認画面でそれを表示し、完了画面に遷移する際に、一時保存場所storage/temp_pet_img/から本番保存場所storage/pet_img/に画像ファイルを移動し、ファイル名をデータベースに保存する』という流れで考えています。
一時保存場所storage/temp_pet_img/から本番保存場所storage/pet_img/に画像ファイルを移動以外の部分は完成しています。
しかし、画像ファイルの移動だけができません。
発生している問題・エラーメッセージ
$original=日時付きの画像ファイルのオリジナル名
・Storage::move('storage/temp_pet_img/'.$original, 'storage/pet_img/'.$original);と記述しているのですがファイルが動きません。
エラーも出ていません。
エラーメッセージ ```なし ### 該当のソースコード Laravel PHP ソースコード 確認画面のコントローラーの処理 public function MyPetConfirm(PetRequest $request) { //フォームから受け取った全てのinputの値を取得 $pet = $request -> all(); if(request('pet_img')){ //pet_imgというファイルの元々の名前を$originalに代入する $original = request() -> file('pet_img') -> getClientOriginalName(); //元々のファイル名に日時を加えた名前をファイル名として$nameに代入する $img_name = date('Ymd_His').'_'.$original; //pet_imgというファイルをstorage/pet_imgに$nameの名前で保存する $file = request() -> file('pet_img')-> move('storage/temp_pet_img',$img_name); //↑ここまでで画像自体の保存は完了 //確認画面のviewに変数を渡して表示 return view('mypage.pet.myPet_confirm', [ 'pet' => $pet, 'img_name' => $img_name, ]); }else{ //確認画面のviewに変数を渡して表示 return view('mypage.pet.myPet_confirm', [ 'pet' => $pet, ]); } } 完了画面のコントローラーの処理 public function MyPetComplet(Request $request) { //フォームから受け取ったactionの値を取得 $action = $request -> input('action'); //フォームから受け取ったactionを除いたinputの値を取得 $pet = $request -> except('action'); //actionの値で分岐 if($action !== 'submit'){ return redirect() -> route('myPet_make') ->withInput($pet); } else { if($pet['pet_img']){ $original = $pet['pet_img']; $oldPath = 'storage/temp_pet_img/'.$original; $newPath = 'storage/pet_img/'.$original; //一時保存場所storage/temp_pet_img/から本番保存場所storage/pet_img/に 画像ファイルを移動 Storage::move($oldPath, $newPath); //↑ここまでで画像自体の保存は完了 } //トランザクション \DB::beginTransaction(); try { //dd($contact); //po新規会員を登録 Pet::create([ 'pet_img' => $pet['pet_img'], 'name' => $pet['name'], 'animal' => $pet['animal'], 'breed' => $pet['breed'], 'birth' => $pet['birth'], 'sex' => $pet['sex'], 'rv_day' => $pet['rv_day'], 'vac_day' => $pet['vac_day'], 'po_user_id' => $pet['po_user_id'], ]); //dd($contact); \DB::commit(); } catch(\Throwable $e) { \DB::rollback(); //abort(500); echo "接続失敗: " . $e -> getMessage() . "\n"; exit(); } //完了画面のviewを表示 return view('mypage.pet.myPet_complet'); } } } ### 試したこと Storage::moveについて調べ、以下の書き方を試しました。 $original=日時付きの画像ファイルのオリジナル名 ・Storage::move('storage/temp_pet_img/'.$original, 'storage/pet_img/'.$original); ・Storage::move('storage/temp_pet_img/$original', 'storage/pet_img/$original'); ・$original -> move('storage/temp_pet_img/', 'storage/pet_img/'); ・$oldPath = 'storage/temp_pet_img/'.$original; $newPath = 'storage/pet_img/'.$original; Storage::move($oldPath, $newPath); 移動先のディレクトリを先に作らないといけないという情報があったためstorage配下にpet_imgフォルダを作りました。 しかしうまく動きませんでした。 ### 補足情報(FW/ツールのバージョンなど) Laravel10 ここにより詳細な情報を記載してください。 プログラミングを始めたばかりで質問の内容がおかしな点があるかと思いますがご容赦ください。 よろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/27 14:21