ここから本文です

multipart/form-data のデータ取得について

syn********さん

2012/11/2123:38:53

multipart/form-data のデータ取得について

formのenctypeがmultipart/form-data の時
getParameterでデータ取得ができないこと知りました。

fileデータと普通のtextデータ、両方を同時に取得したので
getInputStreamを使ってみようと考えたのですが
使用方法を調べてもいまいち理解できません。

【.java】
InputStream is = request.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
reader.close();

【出力結果(一部省略)】
------WebKitFormBoundaryZ6WqcXmK4tlR1ihp
Content-Disposition: form-data; name="count"

100 ←ここだけ取得
------WebKitFormBoundaryZ6WqcXmK4tlR1ihp
Content-Disposition: form-data; name="image"; filename="コーラ.jpg"
Content-Type: image/jpeg
(長い画像データ文字列) ←ここだけ取得

今はこんな感じで、とりあえず文字列で全部取得することは出来ましたが
そこから必要な部分を取り出す方法がわかりません。
inputで入力された部分のみを取り出すにはどうしたら良いでしょうか?

もしくは、他にもっといい方法があるのでしょうか?
最近javaを初めたばかりなので、初心者向けに説明していただけると助かります。
よろしくお願いします。

閲覧数:
12,814
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

mar********さん

2012/11/2215:15:31

synrztbuさん

formで、
ファイルとテキストを同時におくったけど、
multipart/form-dataだから、getParameterが使えない!ってことですよね。たぶん。


そういう時は、Apacheが、ファイルアップロード用の便利ライブラリ(Commons File Upload)を公開しているので、
それを使うといいですよ。
http://commons.apache.org/fileupload/

そして、きっと同じことで悩んでいるのが
http://stackoverflow.com/questions/5512442/input-type-text-value-fr...
この人。正解も書かれているので、参考にしてくださいね^^

質問した人からのコメント

2012/11/22 15:43:49

こ・・・こんな便利なものが・・・?こういうライブラリがあること自体知りませんでした!ありがとうございます!!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

shi********さん

2012/11/2213:31:49

まずはmultipart/form-dataの書式を理解してください。

http://www.studyinghttp.net/cgi-bin/rfc.cgi?2388
http://suika.fam.cx/~wakaba/wiki/sw/n/multipart+form-data

たとえば画像データの文字列から元のバイナリを取り出すには、content-transfer-encodingがどうなっているかを確認しないことにはどうしようもありません(そのencodingに対してdecodeする)。

とはいえ普通のブラウザは無加工で(符号化しないで)送っているハズです。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる