アップロードしたファイルの更新処理と削除処理の考え方
複数ファイルのアップロードのコードを以前書きました。
ajya.hatenablog.jp
ファイルの登録が必須であれば、ファイルが選択されているのか、すなわちサーバーにアップロードされてきているか判定すればわかります。
ファイルの登録が任意の場合はどうすればいいのでしょう。
ファイルを新規に登録する場合
ファイルのアップロードがされていれば、アップロードされていた処理、ファイルのアップロードがされていなければ、そのままなにもしないで処理を終わらせれば済みます。データベースへは新規登録になるので、インサートを行います。
登録済のファイルを別のファイルに更新する場合
ファイルを新規に登録する場合とほぼ同じですが、以前のファイルの情報をデータベースから取得しておいて、更新の対象になったら、以前のファイル自体は、新たな拡張子(.backnなど)を追加して、念のため保存しておきます。データベースにある情報は、新しいファイルの情報にアップデートします。
登録したファイルを削除する場合
以前のファイルの情報をデータベースから取得しておいて、削除の対象になったら、保持用の変数から削除対象の保持用の変数に、ファイルの情報をコピーします。確定する時点で、削除対象の保持用の変数の情報を使って、削除対象のファイル自体は、新たな拡張子(.delなど)を追加して、念のために保存しておきます。
データベースにある情報は、保持用の変数の情報でアップデートして、削除対象となったファイルの情報を消してしまいます。
登録されたファイルの情報を保存するテーブルとは別の、削除されたファイル用のテーブルに、念のため削除対象となったファイルの情報は保存します。
photo credit: mkorsakov THINK via photopin (license)
随分シンプルになりましたが、それまではいろいろと複雑に考えすぎて、あるケースでは辻褄が合わないとわかり、どんどんシンプルにしていきました。