![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在下記のような処理を行なおうとしております。
a.php > 入力ページ
アップロードするファイルを選択します。
b.php > 確認ページ
アップロードするファイルのファイル名を表示します。
c.php > アップロードページ
a.phpで選択したファイルをアップロードします。
move_uploaded_fileで実現しようと思っているのですが、b.php → c.phpの
タイミングでa.phpで選択したファイルがテンポラリディレクトリから
削除されてしまうため、c.phpでアップロード処理が行なえません。
入力 → 確認 → アップロード
といった順で処理を行なう場合、どのような方法を採るのが良いでしょうか。
ヒントでもよいので教えて頂ければと思います。
No.2ベストアンサー
- 回答日時:
b.phpでmove_uploaded_fileするという事は、そこからa.phpに戻った場合はファイルが残ってしまう事になります。
これ自体は仕方がない事ですね。これが会員制のサイトであれば、move_uploaded_fileで移動する先のファイル名にユーザーIDなどを利用すれば、新たにファイルをアップロードした時に上書きされ、ゴミが残るのを避ける事ができます。しかしこうしたとしても、b.phpで中断したりした場合にどうしてもゴミが残るので、タイムスタンプを見て1日以上経過したものは削除、のようなスクリプトを組んでcrondで動かす必要はあります。
まあ、頻度やファイルの大きさによっては、時々見て手作業で削除でもいいですけどね。
これも嫌でしたら、ファイルのアップロード自体はb.phpから行うようにする以外はないと思いますよ。
No.3
- 回答日時:
いくつか方法はありますが。
・セッションなどでファイル名を管理する。
セッションIDをファイル名にしてしまう。
b.php で拾ったファイル名は変数として受け渡して
c.phpでリネームする。
・単純にテンポラリフォルダを使用する。
b.phpのファイルを一旦、一時的に別のフォルダに保存しておく。
c.phpで指定のフォルダに移動すればよい。
どちらの場合もb.phpで処理を終了した場合はごみが残るので、これを削除するような作業が必要。
たとえば、a.phpを見たときに必ずテンポラリフォルダを見て、1時間以上前に作製されたものだったら削除する。
とか。
No.1
- 回答日時:
うちで実践している方法です。
b.phpで、適当なユニークな名前を生成してmove_uploaded_fileします。このファイル名をc.phpに渡します。ファイルの内容チェックが必要でしたらb.phpで行うと良いと思います。
そしてc.phpでそのファイルを本来の場所に移動して終了です。
この回答への補足
wakame0729さん回答ありがとう御座います。
質問させて下さい。
>b.phpで、適当なユニークな名前を生成してmove_uploaded_fileします。
b.phpで、ユーザーが表示されているファイル名を確認し、間違えたファイルを
指定していたと気付いた場合、a.phpに戻って再び選択し直すと思いますが、
この場合は既に間違ったファイルが既にmove_uploaded_fileされている
ということでしょうか?
(ユーザーの確認前にとりあえずmove_uploaded_fileしているということでしょうか。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.phpファイルが、表示されない
-
【file_exists】ファイルが存在...
-
PHPファイルの中身が見られるこ...
-
apacheで拡張子を省略してアク...
-
.phpと.incファイルの違いはな...
-
phpで複数のファイルをdlさせる...
-
サイトのphpソースコードを表示...
-
プログラムで影響するファイル...
-
コマンドプロンプト エラー
-
違法アップロードについて
-
onedrive にexcelファイルをア...
-
MySQLのベースに書かれたプログ...
-
トランザクションが原因?DBに...
-
バッチを用いたフォルダの自動移動
-
データベースにアクセスして結...
-
VBSの「MsgBox」について
-
ダウンロードファイル名の文字...
-
動画共有サイトの作り方
-
拡張子php画像をjpg画像等に変...
-
PHPでファイルをダウンロードさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
URLが.PHPってどういう...
-
.phpファイルが、表示されない
-
サイトのphpソースコードを表示...
-
PHP+MySQL SQL文を外部ファイル...
-
別のドメインのファイルをrequire
-
PHPでフォルダ選択ダイアログを...
-
session_start()でwarningが表...
-
htmlspecialcharsが機能してい...
-
use と requireの違いは?
-
apache+phpにおいてリクエスト...
-
PHPファイルの中身が見られるこ...
-
apacheで拡張子を省略してアク...
-
Fatal error: Class 'Config' n...
-
PHPを使ってのサーバ上ファイル...
-
phpinfoの内容が見れない
-
fputs()はfwrite()のエイリアス...
-
シェルコマンドでphpを実行した...
-
phpmailerで送れない添付ファイ...
おすすめ情報