プロが教える店舗&オフィスのセキュリティ対策術

PHPでファイルのアップロードをしようと考えていますが、単純に1画面でファイルの選択し、
その画面上のボタンを押した際にアップロードするという事は可能ですが、ボタンを押した後、
次画面(プレビュー)でファイル名を確認し、2画面目のボタンを押した時にアップロードしたい
と考えております。

どのように記述したら良いか教えて下さい。

《現状 このままでは正しく動作します》

1画面目

<FORM method="post" name="frm" id="frmid" enctype="multipart/form-data">
<TABLE>
<TR><TD width="200">【登録画面】</TD></TR>
<?php
print("<TR>\n");
print("<TD width='200'>ファイルを選択:</TD>\n");
print("<TD><input type='file' name='upfile'></TD>\n");
print("</TR>\n");
?>
</TABLE>
</FORM>

2画面目

<?php
$updir = "//192.168.999.999/doc/";
$filename = $_FILES['upfile']['name'];

if(move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename)==FALSE){
print("Upload failed");
print($_FILES['upfile']['error']);
}else {
print("<b> $filename </b> uploaded");
}

?>

実際は2画面目ではファイル名だけを表示させ、2画面目のボタンを押した際に
取り込み処理を行いたい。

初歩的な質問で申し訳ありませんが、教えて下さい。

よろしくお願いします。

A 回答 (1件)

1画面目にsubmitがないのですが、どうやって2画面目に遷移するのですか?



>2画面目ではファイル名だけを表示させ、

この時点で、POSTされたファイルを保存していないといけません(スクリプトを抜けたらuploaded_fileは削除されるので)。テンポラリな名前で保存する(一定期間経過したらまとめて削除する)とか、セッション変数に格納するとかの工夫が必要です。

#そもそも「ファイル名を表示」に何か意味があるんですかね。
#画像のときにサムネイルを表示とかならわかりますが(汗

あと、最終的にファイルデータを保存する(テンポラリファイルからmoveするとかセッション変数のデータを書き出すとか)ときに、ブラウザから送信した「ファイル名」を使ってはいけません。アテにしちゃいけないです。
    • good
    • 0
この回答へのお礼

agunuz様、ご回答ありがとうございます。

なんとか実現できました!

お礼日時:2014/04/22 15:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!