- PR -

ファイルアップロードの2重送信防止をするには?

1
投稿者投稿内容
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-12-19 14:24
現在、JDK5, Jsp, JavaScript, Struts5.5, Springの構成でWebアプリを作成しています。

現在は下記のソースの通り、
javascriptのinputCheck()で入力チェックを行い、
(ただし、<html:file>のテキストボックスに入力されたディレクトリのチェックはしていない)
もう1つのjavascriptのsendFile()で2重送信防止を行なっています。

この構成の上で、
一度不正な値が<html:file>のテキストボックスに入力され送信ボタンが押すと、
HTMLの仕様か何かで自動的に(アプリケーションではファイル名の入力チェックはしていない)エラーとなり次の画面には遷移しません。
ですが、その後に適正な値を入力して送信ボタンを押下すると、
JavaScriptで書いたsendFile()で2重送信となってしまい、適正な値なのに次の画面に遷移できません。

皆さんは、どのようにして2重送信の防止をしているのでしょうか?
教えて下さい。よろしくお願いします。

仕様としては、
入力チェック(ラジオボタンが押下されているか?)
と2重送信防止が行なうことになっています。


<script type="text/javascript">

function inputCheck(){
//入力チェックを行い問題がない場合、trueを返す
return true;
//入力チェックを行い問題がある場合、falseを返す
return false;
}
</script>

<script type="text/javascript">
//二重送信防止フラグ、一度送信ボタンが押下されたらflag=true
flag = false;
function sendFile(){
if(flag){
//メッセージを表示
message.style.display = "";
return false;
}
//一度目のボタン押下時にflag=trueにする
flag=true;
return true;
}
</script>



<html:form action="/AAA" method="post" enctype="multipart/form-data" onsubmit="return sendFile()">

--中略--

アップロードファイル:<html:file property="file"/>
<html:submit value=" 送信" onclick="return inputCheck();"/>
<div id="message" style="display:none">ファイルのアップロード中です。</div>
</html>

[ メッセージ編集済み 編集者: ごろう 編集日時 2007-12-19 14:40 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-12-19 15:33
JavaScriptの話ですね。

パスが不正だったりすると、IEの場合内部的にエラーになるようです。
その場合、form#submitをtry/catchの中で実行すると、
catch節に入りますので、そこでエラー処理が行えます。
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-12-19 17:53
引用:

かつのりさんの書き込み (2007-12-19 15:33) より:
JavaScriptの話ですね。

パスが不正だったりすると、IEの場合内部的にエラーになるようです。
その場合、form#submitをtry/catchの中で実行すると、
catch節に入りますので、そこでエラー処理が行えます。




form#submit でonclick=で呼び出している、
inputCheck()内にtry/catch節を記述してみます。

それとも、Actionにtry/catch節を記述なのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)