- PR -

ファイルのアップロード時のパラメータの引渡しについて

1
投稿者投稿内容
linlin
会議室デビュー日: 2006/03/17
投稿数: 14
投稿日時: 2006-05-28 19:26
お世話になります。

http://www.atmarkit.co.jp/fjava/javatips/106jakarta018.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28275&forum=12&2
http://www.javadrive.jp/servlet/fileupload/index.html

を参考にして、ファイルアップロード処理を行っています。
サーバ側のデータの受け取り、データの格納はうまくいきました。

ただし、アップロード処理に対し、その他の処理分岐を行いたいので
他のパラメータをhiddenにて、付加したいのですが、サーバ側でよみとれません。

<%@ page contentType="text/html;charset=Windows-31J" %>
<html>
<head>
<title>ファイルのアップロード</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="UploadServlet?cmd=upload">
ファイルパス:
<br>
<input type="file" name="fl1" size="75" /><br>
<input type="hidden" name="id" value="420012" >
<input type="submit" value="アップロード" />
</form>
</body>
</html>
//////////////////////////////////////////////
public class UploadServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=Windows-31J");

String cmd = request.getParameter("cmd");
System.out.println(cmd);

String id = request.getParameter("id");
System.out.println(id);
/// http://www.javadrive.jp/servlet/fileupload/index.html
//  を参考
String path = getServletContext().getRealPath("file");

DiskFileUpload dfu = new DiskFileUpload();
dfu.setSizeMax(-1);
dfu.setSizeThreshold(1024);
dfu.setRepositoryPath(path);
dfu.setHeaderEncoding("Windows-31J");

try {
List list = dfu.parseRequest(request);
Iterator iterator = list.iterator();
:
:

action="UploadServlet?cmd=upload"
の指定によるパラメータ(cmd)は読み取れるのですが、
<input type="hidden" name="id" value="420012" >
のパラメータが読み取れません。
よろしくお願いいたします。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2006-05-28 19:55
マルチパート形式で送ったFormのパラメータは、request.getParameter()では取得できません。
DiskFileUpload から取得したFileItem の一個として扱われます。
FileItem#isFormField()で、ファイルなのか通常のパラメータなのか判断できます。
linlin
会議室デビュー日: 2006/03/17
投稿数: 14
投稿日時: 2006-05-28 22:13
coasmさん、的確な回答、ありがとうございます。
無事、取り込むことができました。
///////////////
    :
try {
List list = dfu.parseRequest(request);
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();
// アップロード用ファイル名指定の場合
if (!(item.isFormField())) {
String fileName = item.getName();
if ((fileName != null) && (!fileName.equals(""))) {
fileName = (new File(fileName)).getName();
item.write(new File(path + "/" + fileName));
}
// アップロード用ファイル以外の場合
if (item.isFormField()) {
String paraName=item.getFieldName();
String paraValue=item.getString();
System.out.println(paraName);
System.out.println(paraValue);
// hidden のデータの名前とデータを取り込む
}
}
}
///////////////
どうもありがとうございました。
1

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