- ベストアンサー
ファイルアップロードについて
ファイルアップロードについて質問させて下さい。 ID、ファイルアップロードの機能の2つがあります。 ファイルを指定し、submitボタンを押下すると「b.php」に遷移します。 ファイルをアップロードした場合には遷移をせず ID、画像パスが入力されている場合のみ「b.php」に遷移したいのです。 入力チェックはjavascriptで行っていますが、その場合には「action=""」として javascript側で遷移するしか方法は無いのでしょうか? ---a.php---- <form enctype="multipart/form-data" action="b.php" method="post" name="a"> <input type="hidden" name="MAX_FILE_SIZE" value="50000000" /> <table> <tr> <th>ID</th> <td><input type="text" name="ID" value=""></td> </tr> <tr> <th>画像</th> <td><input type="file" name="img" value=""> <input type="submit" name="upload" value="upload"> </td> </tr> </table> <a href="#" onClick="javascript:check('a');"><img src="button.jpg"></a> </form> お手数ですが、ご教授よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1です 蛇足ですが「onsubmitでチェックしている」というのは、b.phpで入力チェックを省いていいことにはなりません。キチンとチェックして不備があればa.phpに戻してください。
その他の回答 (2)
- shimix
- ベストアンサー率54% (865/1590)
>IDを入力する前に画像をアップロード >しようとするとID、fileの入力チェックを行ってしまうため、 >アップロード(うまく出来たと記憶しています。)と同時に >エラーメッセージも表示されてしまうため、 もし本当にそういう動作になっていたとしたら、JavaScriptのチェックが間違っています。return falseすればsubmitしませんので、アップロードされません(phpに引き渡すPOST自体が発生しない)。submitしているのであれば、JavaScriptがおかしいです。 もちろん(前述のとおり)JavaScriptが動作しなくても「キチンとしたエラー処理を行う」ようにphpを作成するのが基本です。
- shimix
- ベストアンサー率54% (865/1590)
form要素のonsubmitでチェックすればいいのでは? <form enctype="multipart/form-data" action="b.php" method="post" onsubmit="return check();"> check()でreturn falseすればsubmitはキャンセルされます。
お礼
ご回答ありがとうございます。 <form enctype="multipart/form-data" action="b.php" method="post" onsubmit="return check();"> ここに書き込む前に上記のパターンも試してみたのですが、IDを入力する前に画像をアップロード しようとするとID、fileの入力チェックを行ってしまうため、アップロード(うまく出来たと記憶しています。)と同時にエラーメッセージも表示されてしまうため、他に方法があるのか質問させていただいた次第でございます。 アップロードせずにDB側で持つ事も考えましたが、あまりセキュリティ上好ましくないようなので 何が一番良いのやら…と言った感じで迷っています。
お礼
ご回答ありがとうございます。 「return falseすればsubmitしませんので、アップロードされません」 確かに戻り値がfalseなので、submitはされないですね。 うまくアップロードした時には、javascriptのチェックを外していたのかもしれません。 色々試行錯誤しすぎて記憶があやふやで申し訳ないです…。 色々サイト見たり本屋で調べたりはしましたが、自分が想定していた画面UIは あまり存在しないようなので諦める事にします。