ファイルのアップロードに関して
会員フォームを作ります。
test01→02→03に進みます。
test01.php
========================
----入力----
①「名前」( )
②「メール」( )
③「画像」( )※アップロードします
------------
(送信)(リセット)
========================
↓
test02.php
========================
これでOKですか?
「はい」「いいえ」
========================
↓
test03.php
========================
名前、メール、アップロード完成
========================
この場合、03でmysqlに書込みます。
その際に、02から03にファイルの持ちまわしをするにはどうすればいいですか?(一般的にはどのようなもち回し方をしますか?)
○「名前」や「メール」はhiddenを使って持ちまわせますが、ファイルはできますか?
わかるかたおねがいします
別ページにしようとして苦労されているように見受けられます。
送信ボタン<input type="submit" name="up" />
確認ボタン<input type="submit" name="conf" />
POSTリクエストで受けるするとすると、
if(isset($_POST['up']) && !isset($_POST['conf']) ) {
echo確認メッセージ
アップロード処理
} elseif(!isset($_POST['up']) && isset($_POST['conf'])) {
MySQL INSERT 処理
} else {
echo最初のアップロード画面
}
というふうに1ページの処理にすれば、ファイルのパスを持ちまわす心配は要りません。
アップロードしたファイルはhiddenでは持ちまわせません。
一度アップロードしたファイルは適当な場所に保存しておき、そのファイルへのパスを持ちまわすことになります。
この場合、ユーザがそのまま登録してくれればよいですが、違う画像をアップロード、途中でやめたといった場合、一時ファイルを削除することを考慮する必要があります。
ただ、ブラウザを突然閉じられるような場合は一切対処できないので、そこまで面倒を見る必要があれば、主導で消すか、定期的に消すプログラムが必要となります。
ご参考なれば。
http://www.gac.jp/article/index.php?stats=question&category=...
画像などのファイルをローカルからアップロードする場合、セキュリティ上の理由から<input type="file">によって手動で選択されたものしか送信できないようになっています。
つまり、確認画面からのSubmitにファイルを含めることはできません。
ですので、送信の前に確認画面を挟む場合は、確認画面に遷移する時点で一旦tmpフォルダかデータベースのtmpテーブルにファイルをアップロードしてしまい、そのファイル名をhiddenで保持しておきます。
そして、他の情報が送信される際に、すでにアップしておいたファイルをデータベースに記録することで、確認画面を跨いだアップロードを実現するのが普通です。
ありがとうございます!!!
やってみます。