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

今、JAVAservletでファイルをアップロードするプログラムを作成しています。
であるサイトを参考に実装することには成功したのですが、予期せぬことに
リクエスト内にある取り出す必要のない情報もいっしょにファイルに書き込まれて
しまいます。FORMのボタンの情報が一番最後についてくるのです。

content-Type: multipart/form-data; boundary= ---------------------------10265533117308
-----------------------------10265533117308
content-disposition: form-data; name="submitter"

username
-----------------------------10265533117308
content-disposition: form-data; name="Uploaded file"; filename="abc"

[... contents ...]  ← ココのみを取り出したい

-----------------------------10265533117308

が、この場所にあるFORMボタンの名前などの情報も引っ付いてしまっている。

------------------------------------------

どうやら、boundary 文字列 で区切られているという事は
調べたのですが、かといって「boundary」がなんなのかさっぱり
わからず、切り離すにもどうしたらいいのかわからない状態なのです。
 何か良い知恵を貸してください。
また、そういったことを詳しく乗せているサイトの情報などもお願いします。

A 回答 (1件)

バウンダリとは区切り文字です。


MIMEタイプの1つであるマルチパート形式であるデータの場合に必ずついてきます。
具体的には、

Content-Type: multipart/form-data; bondary=---------------------------10265533117308

がマルチパートメッセージの開始を示すものです。
複数のメッセージ(=データ)は「boundary=」以降の文字列で区切られていることを示しています。
また区切り文字列(この場合は---------------------------10265533117308 )の次の行には次データある場合は必ずMIMEタイプやデータタイプの宣言が付きます。

content-disposition: form-data; name="submitter" ←これです。

このような構造になっているので、メッセージ全体をスキャンして必要な部分のみを切り出せば良いことになります。

参考URLはRFC文書の日本語訳リンク集です。
詳細はMIME関連のRFCをご覧ください。

参考URL:http://www.se.hiroshima-u.ac.jp/~isaki/rfc/list. …
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげさまで不要なデータを取り除くことができました。URLのほうも勉強になりました。また、アドバイスお願いしますね。

お礼日時:2001/12/18 08:51

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