「画像パス」とはいえ単なる文字列なので、プログラム側で適切に名前を払い出してあげて、そのまま置き場所を保存すればいいかなと。
また、画像の置き場や画像の命名規則などをカテゴリーやIDなどできちんとつけてあげれば問題ないかと思います。
画像ファイル名をローカルファイルの名前のまま保存することはオススメできません。
あくまでプログラム側で適切に(重複しないようにとか文字数気をつけるとか)命名してあげましょう。
画像のアップロードはformからの送信がベターですね。
最近どこかでも書きましたが、下記、参考にしてください。
一定のルールを設ける:
- アップロードした画像の置き場は決めておく(1ディレクトリに集中しすぎないように分散)
- アップロード時に画像をリネームして命名規則(例えばレコードのIDやカテゴリ名など)に則る
こうすると、①拡張子文字列だけを保存しておくというやり方になります。
また、②拡張子まで限定した場合はそれすら不要にできたりします。
商品に対する画像の保管を例に解説します。
①の例
画像名は画像ID、商品コードでディレクトリをわける
./images/0001/1.jpg
./images/0001/2.png
./images/0002/3.gif
「images」「商品コード」に保管すると決めているので保管しなくてOK。
また「画像ID」でファイル名を命名しているのでこれも保管しなくてOK。
画像マスタに画像IDと拡張子だけ保存しておき、商品マスタには画像IDを保管しておきます。
この場合、画像が複数あるので1カラムに何か区切り文字列で区切ってもいいですし、枚数に制限があるならimage1,image2などのカラムにそれぞれ対応する画像IDを入れておけば、
商品マスタから画像マスタを探して適切な拡張子を取得できます。
(画像マスタに商品コードを入れて商品マスタには画像関係の情報を持たないのでもいいですね)
また②の例では「jpgに限る」というようなルールを設けておくと拡張子は全て同じなので
拡張子すら保存は不要という意味となります。
要は、どこまでルールを作るか、どのような画像を保管するか、どのようなサイトか、、、ですね。
画像名は任意でつけるような仕組みの場合は当然画像名の保管も必要ですし、適宜対応が必要です。
あと、ファイルアップロードについての記事も参考にしてください。