質問: ファイルアップ時のファイル名 phpで画像をアップロードしようとしています。 ファイル名を「000000_999999.jpg」というような感じにしたいです。 ファイル名の000000の部分は日付(080221等)が入ります。 999999の部分をどうしたら良いのか分かりません。 同時に5ファイルまでアップロードできるようなフォームになっています。 この場合で、絶対ダブらないようにするにはどのような値を使えば良いのでしょうか? 出来れば関数名も入れていただけると嬉しいです。 お願いいたします。
回答: そうですねー、削除は、面倒ですねー。 ・・・ちと、考え中・・・ もし、私が作るのなら、自分だけなら、排他処理は保留します。 もちろん、後で排他処理も使えるようにしますが、完成を先にしたいし。 排他処理は必須ではないと、考えます。 画像の保存方法は、 年月日フォルダ¥time() + 1(~5).jpg の方法をとります。 time()は前もって、時間を取得しているので、だぶらせません。 つまり、 $jikan = time(); //仮に値が 1203948113 $hiduke\$jikan-$no.jpg 具体的には、 080225\1203948113-1.jpg 080225\1203948113-2.jpg 080225\1203948113-3.jpg 080225\1203948113-4.jpg 080225\1203948113-5.jpg 複数の人が、同時にアクセスするのなら、排他処理は必要ですが、1人だけなら、次の画像アップまで、1秒くらいは待ちましょう。w 前回のアップロード時間を保存しておいて、1秒以内なら、エラー画面を出すって方法もありますが、複数の人が使う場合は、やはり排他処理が必要になってくる。 で、画像を削除する時は、そのまま削除。 アップロードする時に 1(1の画像) [ ][画像のアップボタン] 2(2の画像) [ ][画像のアップボタン] 3(画像なし) [ ][画像のアップボタン] 4(4の画像) [ ][画像のアップボタン] 5(5の画像) [ ][画像のアップボタン] アップ画面は、こんな感じにします。 前詰めは、面倒なのでしません。 すでに画像があるものは、上書き保存してもいいし、”すでにある”とエラー画面を出してもいいです。 で、画像の表示画面ですが、表示段階で前に詰めようかと。 for 5回 if (画像があれば ){表示} else{なければスルー。} こうすれば、上の例だと、3をスルーして、あと全部表示にすれば、まぁ、私的な作成法です。 ただ、この方法だと、消した画像の所に画像を入れるので、一枚消して、最後に入れたい場合だと、面倒ですねー。 まぁ、消して、再度アップロードし直せば、いいだけですが。 この機能は、私は必要とは思わないけど、もし必要なら、後から名前を入れ替える関数を作ってもいいかなー、と。 プログラムには、いろいろな作成方法やポリシーがあるので、一概には言えません。 あなたなりのアイディアで、がんばってくださいね。