No.4ベストアンサー
- 回答日時:
そうですねー、削除は、面倒ですねー。
・・・ちと、考え中・・・
もし、私が作るのなら、自分だけなら、排他処理は保留します。
もちろん、後で排他処理も使えるようにしますが、完成を先にしたいし。
排他処理は必須ではないと、考えます。
画像の保存方法は、
年月日フォルダ¥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をスルーして、あと全部表示にすれば、まぁ、私的な作成法です。
ただ、この方法だと、消した画像の所に画像を入れるので、一枚消して、最後に入れたい場合だと、面倒ですねー。
まぁ、消して、再度アップロードし直せば、いいだけですが。
この機能は、私は必要とは思わないけど、もし必要なら、後から名前を入れ替える関数を作ってもいいかなー、と。
プログラムには、いろいろな作成方法やポリシーがあるので、一概には言えません。
あなたなりのアイディアで、がんばってくださいね。
ありがとうございます。
丁寧に書いていただき感謝いたします。
すごい分かりやすいです。モヤモヤしていたものが晴れました。
表示の時に空き番を詰めるってのもアリですね。
頂きました情報を参考にさせていただき作ってみたいと思います。
本当にありがとうございました。
No.3
- 回答日時:
しくしく。
>w<。誤って消してしまったので、詳しくは排他処理で調べてください。
1人で使うなら、080224(年月日フォルダ)¥time() + 1(~5).jpgでいいと思いますよ。
timeは一秒ごとなので、同じ人間が1秒以内に、ファイルをアップロードする事はなずないでしょう。
Linuxでも同じフォルダ内のファイル数の制限もありますし、多いと処理が遅くなるので。
複数で使う場合は、排他処理が必要になります。
カウンターなんかには、この処理がしてあるものも多いです。
排他処理をしなければ、ダブル可能性は少なからずあります。
No1さんの方法もありますし、私のように方法もあると思います。
要は、名前を付ける時と、保存する時には微妙にタイムラグがあります。
名前を付けた時、別の人がその名前で保存したとき、名前を付けた人とダブルのは、どんなに時間を精密にしても可能性が残ります。
なので、ファイルがあった場合は、名前を変える処理が必要って事です。
ありがとうございます。
使うのは1人(1ユーザー)の予定です。
年月日フォルダ¥time() + 1(~5).jpgは私も良いと思ったのですが、末尾の1(~5)の連番が、1つファイル削除された時、番号を詰めるのが面倒かなと思いまして。
あと、「1秒以内に、ファイルをアップロードする事はなず」ってとこですが、HTMLフォームで<input type="file">が5個あるのですがこの場合だとダブりますよね。PHPで、ファイル名を決める直前でもダブる可能性は十分あり得ちゃいますよね。
いずれにしても、ファイルの存在チェックは必要なのですね。
No.2
- 回答日時:
日付_ナンバーは必須なんですか?
Now_1-5ではダメなんでしょうか?
日付で分けたければ、フォルダーにしちゃうとか。
絶対だぶらない方法にすると、読み込む時に、分かりにくいような気も。
Now(現在時刻の秒表示ってこれだっけ)は、file_existかな?存在チェックをして、・・・、変数でflgを立てる方がいいか。
とにかく、何らかのチェックをして、先に処理されていたら、sleepしてNowの所を変えるようにするとか。
最近、PHPを触っていないので、勢いで書いてます。w
ありがとうございます。
日付_999999は必須というわけではないのですが、ファイルをアップした日時がある程度分かったほうがいいかなと思いまして。
現在時刻の秒ですが、どこまで(細かく)取得すればダブらないのでしょうか?
No.1
- 回答日時:
tempnamを使うのは確実な方法のひとつだと思います
http://jp2.php.net/manual/ja/function.tempnam.php
とりあえず空のファイルを作ってから、それをuploadされたファイルで上書きする
http://jp2.php.net/manual/ja/function.move-uploa …
という方法はどうでしょうか
パーミッションが0600だとまずいケースもあると思うので、
必要に応じて0644や0666などに書き換えると良いと思います
ありがとうございます。
tempnamはどのようなファイル名になるのでしょうか。
一応、ある程度意味のあるファイル名にしたいのですが。
999999を時間にする場合、どの関数でどこまでの秒を取得すればダブらないのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子php画像をjpg画像等に変...
-
JSPにてMySQLのBLOB型の画像の...
-
手作業で埋め込んだ、UserForm1...
-
PHPでDBとディレクトリへの画像...
-
改行コードのカウント
-
GD(php)での image関数 イメ...
-
pictureboxに表示した画像のフ...
-
getimagesizeで画像がなかった...
-
透過PNGが透過されない!!
-
php,mysqlにて画像パス保存/表...
-
【JAVA】画像のサイズを大きく...
-
5~10秒間隔で画像を表示する方法
-
libpng 24bpp rawをPNGに変換す...
-
アップロードした画像をうまく...
-
PHPファイルの中身が見られるこ...
-
session_start()でwarningが表...
-
PHPで新しいウインドウで開く命...
-
onedrive にexcelファイルをア...
-
データベースへの持続的接続
-
youtubeに音声のみのmp4ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
透過PNGが透過されない!!
-
拡張子php画像をjpg画像等に変...
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
OpenGLで描いて画像ファイル出力
-
move_uploaded_fileのエラーについ
-
PythonのTkinter詳しい方へ。画...
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
C#とJavaで、MP3タグの画像を表...
-
手作業で埋め込んだ、UserForm1...
-
画像リストを作りたい
-
【PHP】サーバー上で TIFFをJPE...
-
BLOBデーターの画像の表示方法...
-
DBに格納された画像データを縮...
-
VBAでJPGサイズ変更
-
どの画像がクリックされたかフ...
-
PHPで吐き出した画像にリンクを...
-
PHP MySQLに画像を直接保存
おすすめ情報