![](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で質問しましょう!
似たような質問が見つかりました
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サイトのphpソースコードを表示...
-
use と requireの違いは?
-
CakePHPの .htaccess設定について
-
別のドメインのファイルをrequire
-
apache+phpにおいてリクエスト...
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
phpが実行できない
-
さくらレンタルサーバーでPHPが...
-
phpmailerで送れない添付ファイ...
-
CFileDialogの最初のディレクト...
-
VB6にてメールを送信する方法
-
onedrive にexcelファイルをア...
-
phpのheader("Location:#pos")...
-
バイナリファイルをブラウザに...
-
OpenGLで描いて画像ファイル出力
-
フォントの色を変えるには?
-
VB.NET 最下位のディレクトリ名...
-
リンク先を隠す方法はないでし...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
URLが.PHPってどういう...
-
use と requireの違いは?
-
PHPからCronを編集したい
-
HTMLに埋め込んだPHPがうまく出...
-
さくらレンタルサーバーでPHPが...
-
プロパティファイルの読み込み...
-
htmlspecialcharsが機能してい...
-
PHPファイルの中身が見られるこ...
-
サーバ無しでphpを動作させる
-
thtmlファイルとはどんなファイ...
-
phpの書き方
-
PHP+MySQL SQL文を外部ファイル...
-
PHPの慣習的な書き方・組み方に...
-
cakephpで特定ファイル表示(hta...
-
PHPを使ってのサーバ上ファイル...
-
session_start()でwarningが表...
-
fopenでファイルを読み込み、そ...
おすすめ情報