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で質問しましょう!
似たような質問が見つかりました
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(IT・Webサービス) WPからダウンロードしたファイル名を指定したい 2 2022/04/08 08:31
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Google Drive Googleドライブについて 3 2023/08/06 12:19
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
透過PNGが透過されない!!
-
C# Excelファイルへの画像挿入。
-
VBSの「MsgBox」について
-
SQLiteに画像を格納したい
-
BLOBデーターの画像の表示方法...
-
画像ファイル pngのメリットを...
-
ckfinderの画像のアップロード先
-
PHPで吐き出した画像にリンクを...
-
再投稿です。初MacでPythonの勉...
-
PostgreSQLのラージオブジェク...
-
【PHP】画像が表示されず「×」...
-
どの画像がクリックされたかフ...
-
IPアドレス別に表示する画像を...
-
<img src="http://x.y.com/cgi-...
-
iphoneで虫眼鏡の作り方
-
画像表示システムをつくりたい...
-
libpngでpng操作がうまくいかない
-
php,mysqlにて画像パス保存/表...
-
phpで画像を縮小して表示するこ...
-
スマートフォンから画像のアッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
VBAでJPGサイズ変更
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
SQLiteに画像を格納したい
-
アップロード画像数でCSSを分け...
-
PythonのTkinter詳しい方へ。画...
-
ビットマップ画像を読み込むプ...
-
Illustratorで文字と画像を流し...
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
pictureboxに表示した画像のフ...
-
OpenGLで描いて画像ファイル出力
-
ListViewコントロールでサムネ...
-
BLOBデーターの画像の表示方法...
-
「imagejpeg」(GD)で作成した...
-
【PHP】画像が表示されず「×」...
-
PHP MySQLに画像を直接保存
-
GDを使って画像の背景を透過さ...
-
★PHP★画像アップロードの際に余...
おすすめ情報