2011-08-09 18 views
4
<% 
..... code to check request is submitted or not ... 
%> 
<form method="post" action="" name="uploadform" enctype="multipart/form-data"> 
    <table > 
    <tr>  
     <td>Select up to 3 files to upload</td> 
    </tr>  
    <tr>  
     <td> 
     <input type="hidden" name="newFileName" value="newUploadedFileName1"> 
     <input type="file" name="uploadfile" > 
     </td>  
    </tr>  
    <tr>  
    <td align="center"> 
     <input type="submit" name="Submit" value="Upload"> 
     <input type="reset" name="Reset" value="Cancel"> 
    </td> 
    </tr> 
</table> 
</form> 

ファイルをアップロードするjsp投稿要求コードは、<%..%>タグの同じページになります。jspフォームのリクエストが同じJSPページで送信されていることを確認するにはどうすればよいですか? (enctype = "multipart/form-data")

[送信]ボタンがクリックされているかどうか、つまり投稿要求が送信されたかどうかを確認するif文を使用したチェックを追加するにはどうすればよいですか。

私はこれに続き、http://www.java2s.com/Code/Java/JSP/SubmittingCheckBoxes.htmしかし、それは助けにならなかった、そして同じページにない別のJSPファイル( "formAction.jsp")を呼び出すことです。

if(request.getParameter("newFileName") != null) { 

この文は、常にNULL値を与えます。どうしてか分かりません。

注:それは、この属性を持つフォームです=>にenctype =「multipart/form-データ」

文の場合、私はすべてのを追加しない場合は、ファイルを初めてアップロードされますが、次回の場合私はリロードボタンをクリックするか、ページをリフレッシュすると、ブラウザはデータを再送するか、以前のファイルを再アップロードするように促します。私はあなたが問題を理解したことを願っています。問題を理解するための混乱があればコメントしてください。

誰でもヒント/解決策を教えていただけますか?

答えて

8

multipart/form-dataを使用している場合、エンコーディングと異なるエンコーディングでリクエストが送信されています。このエンコーディングはgetParameter()とそれに依存しています。だから彼らはすべてnullを返すのです。提出された値を決定する前に、multipart/form-dataリクエストを分かりやすいオブジェクトに解析する必要があります。そのためには通常Apache Commons FileUploadまたはrequest.getParts()が使用されています。詳細については、this answerをチェックしてください。

また、リクエスト方法を確認することもできます。通常のリクエスト(リンク、ブックマークなど)は常にGETです。ファイルをアップロードするフォーム送信は常にPOSTです。

if ("POST".equalsIgnoreCase(request.getMethod())) { 
    // Form was submitted. 
} else { 
    // It was likely a GET request. 
} 

しかし、これはJSP内で全く意味がありません。生のJavaコードをJSPファイルに書き込むことは、メンテナンスの問題を解決するためのレシピです。むしろフォームを完全にservletに提出し、doPost()メソッドを実装するだけです。サーブレットでは、すべてのHTMLを考慮に入れずにJavaコードを記述することができます。

関連する問題