/** * ローカルディスク * [引用] https://readouble.com/laravel/6.x/ja/filesystem.html * * localドライバを使う場合、 * filesystems設定ファイルで指定したrootディレクトリからの相対位置で * 全ファイル操作が行われることに注意してください。 * デフォルトでこの値はstorage/appディレクトリに設定されています。 * そのため次のメソッドでファイルはstorage/app/file.txtとして保存されます。 * * Storage::disk('local')->put('file.txt', 'Contents'); */ Storage::disk('local') ->putFileAs('photo_' . Auth::user()->name, $request->photo, $photo->filename, 'public'); // データベースエラー時にファイル削除を行うため // トランザクションを利用する DB::beginTransaction(); try { Auth::user()->photos()->save($photo); DB::commit(); } catch (\Exception $exception) { DB::rollBack(); // DBとの不整合を避けるためアップロードしたファイルを削除 // Storage::cloud()->delete($photo->filename); // Storage::disk('local')->delete($photo->filename); Storage::disk('local')->delete('photo_' . Auth::user()->name . $photo->filename); throw $exception; }