From e63613f33778f456c245c3b966153cc4b30e2ba6 Mon Sep 17 00:00:00 2001 From: "kin.rinzen" Date: Wed, 22 Oct 2025 09:40:46 +0900 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=83=8F=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=89=E5=87=A6=E7=90=86=E3=81=AE=E6=94=B9?= =?UTF-8?q?=E5=96=84=E3=81=A8=E4=B8=8D=E8=A6=81=E3=81=AA=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/InvSettingController.php | 55 ++++++++++++++++--- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Admin/InvSettingController.php b/app/Http/Controllers/Admin/InvSettingController.php index 1a55c3c..ecb3197 100644 --- a/app/Http/Controllers/Admin/InvSettingController.php +++ b/app/Http/Controllers/Admin/InvSettingController.php @@ -105,7 +105,7 @@ class InvSettingController extends Controller // ▼ 既存レコードを取得(1レコード運用) $row = InvSetting::first(); - // ▼ 画像パスを設定(AJAX アップロード済みファイルのパスを優先) + // ▼ 画像パスを設定 $imagePath = $request->company_image_path; // ▼ フォームで新たにファイルを送信した場合のみ再保存(保険的処理) @@ -148,6 +148,39 @@ class InvSettingController extends Controller /** * 社判画像アップロード(AJAX用) */ + // public function upload(Request $request) + // { + // // ファイルがアップロードされているか確認 + // if ($request->hasFile('company_image_file')) { + + // // 拡張子チェック & バリデーション + // $request->validate([ + // 'company_image_file' => 'required|image|mimes:png,jpg,jpeg|max:2048', + // ], [ + // 'company_image_file.image' => '画像ファイルを選択してください。', + // 'company_image_file.mimes' => 'アップロード可能な形式は png, jpg, jpeg のみです。', + // 'company_image_file.max' => 'ファイルサイズは2MB以下にしてください。', + // ]); + + // // ファイル保存(public/storage/inv に格納) + // $path = $request->file('company_image_file')->store('inv', 'public'); + + // // ファイル名を抽出 + // $fileName = basename($path); + + // // JSONで返却(JSが受け取る) + // return response()->json([ + // 'file_name' => $fileName, + // 'path' => $path, + // ]); + // } + + // // ファイル未選択時 + // return response()->json([ + // 'error' => 'ファイルが選択されていません。' + // ], 400); + // } + public function upload(Request $request) { // ファイルがアップロードされているか確認 @@ -162,15 +195,22 @@ class InvSettingController extends Controller 'company_image_file.max' => 'ファイルサイズは2MB以下にしてください。', ]); - // ファイル保存(public/storage/inv に格納) - $path = $request->file('company_image_file')->store('inv', 'public'); + // ファイルオブジェクト取得 + $file = $request->file('company_image_file'); - // ファイル名を抽出 - $fileName = basename($path); + // 元のファイル名(例:company_logo.png) + $originalName = $file->getClientOriginalName(); - // JSONで返却(JSが受け取る) + // 保存用に、ファイル名の重複を避けるためにユニーク名を生成(推奨) + $fileName = $originalName; + + // public/storage/inv に保存 + $path = $file->storeAs('inv', $fileName, 'public'); + + // JSONで返却(JS側で表示用ファイル名を使う) return response()->json([ - 'file_name' => $fileName, + 'file_name' => $originalName, // ユーザーが見えるファイル名 + 'stored_as' => $fileName, // 実際に保存されたファイル名 'path' => $path, ]); } @@ -182,4 +222,5 @@ class InvSettingController extends Controller } + }