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

「入力.html」でfileを選択し、テキストボックスに文字を入力し
サブミットボタンをクリックすると
「表示.jsp」にファイル名とテキストボックスに入力した文字
を表示させたいのですがテキストボックスに入力した文字
が表示されません(nullと表示される)。
どうすればテキストボックスに入力した文字を
表示させられるでしょうか。
ご回答よろしくお願いします。

==表示.jsp==
<%@ page contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<% request.setCharacterEncoding("Shift_JIS"); %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.regex.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="java.io.*"%>
<%
byte buffer[] = new byte[4096];
ServletInputStream in = request.getInputStream();
/* boundaryの読み込み */
int size = in.readLine(buffer, 0, buffer.length);
// 末尾の改行(CR+LF)を除いて文字列に変換
String boundary = new String(buffer, 0, size - 2);

/* Content-Dispositionヘッダ読み込み */
size = in.readLine(buffer, 0, buffer.length);
String header = new String(buffer, 0, size - 1);

Pattern pattern = Pattern.compile(".*filename=[ \"]*(.*)[ \"][\\W]*");
Matcher matcher = pattern.matcher(header);
matcher.matches();
String fileName = matcher.group(1);
File file = new File(fileName);
fileName = file.getName();

%>
<html>
<head>
</head>
<body bgcolor="#99aaff">
<br>
<%=fileName%><br>
<%=request.getParameter("fileComment")%>
</body>
</html>

=入力.html=
(文字制限のため一部)
type="file" name="fileName"
type="text" name="fileComment"

A 回答 (1件)

<form>タグのenctype属性に


enctype="multipart/form-data"
と「multipart/form-data」を指定していると思いますが、
この「multipart/form-data」を指定した場合は
request.getParameter()からはHTTPリクエストの値を取得できません。
ファイル名を取得するのと同じようにマルチパートから取得して下さい。
ファイルの情報のあとに、input type="text"で入力された文字列があります。

この回答への補足

Content-Disposition: form-data; name="fileComment"
の部分はファイルの内容が記述されているところの
後にあることがわかりました。

その行をどのように取得したらよいかわかりません。

補足日時:2006/12/17 09:30
    • good
    • 0
この回答へのお礼

pcbeginnerさん、ご回答ありがとうございました。

-----
Content-Disposition: form-data; name="fileComment"

"コメント"
-----

↑のような部分を取得したいのですがわかりません。
リクエストデータをすべて見る方法を教えていただけないでしょうか。
よろしくお願いします。

お礼日時:2006/12/16 18:38

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