skillup

技術ブログ

Java

Fileのアップロード

投稿日:2015年7月11日 更新日:

業務でCSVのアップロードを行っていますが、ファイルになりますと当然文字列ではなく、バイナリ形式のデータが必要になります。

アップロード自体の処理を書いていなかったので、その扱い方についてちょっと書いておきます。

fomタグ

まずHTMLの場合ですが、テキストだけでなく、ファイル(つまりはバイナリデータ)を渡す場合には、プロパティを別途セットする必要があります。

enctype="multipart/form-data" をセットするだけです。

この部分はJavaでも同じです。というかHTMLの構造なので変わるわけないですね・・

またinput type=”file”の代わりにh:inputFileを使います。

ManagedBean側での処理

ManagedBean側での処理ですが、こちらも文字列ではないので特殊なオブジェクトをセットする必要があります。

これはサーブレットのPartというクラスを使います。

このように定義しておけばあとはPartオブジェクトのメソッドが使え、

  • ファイル名の取得
  • サイズの取得
  • 実際の内部データの取り出し

などを行うことができます。

リファレンス・リンク

partオブジェクトのリファレンスは↓こちらです。

http://docs.oracle.com/javaee/7/api/javax/servlet/http/Part.html

その他参考にしたリンクはこちらです。

JSF 2.2 で待ちに待ったFileUploadを試す

Servlet 3.0 File Upload 機能

[Java] File Uploads Using JSF 2.2 and Java EE 7

バグ

なお、Pretty-facesを使っているとファイルを伴った繊維の時、マッピングが正常におこなわれませんでした。

原因は只今調査中です。

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

例外処理について その2

以前、「例外処理について」で例外処理について記述をしたんですが、漠然としていたのともう1回まとめなおしたかったため、メモしておきます。 Contents1 例外とは?2 例外のクラス分け2.1 Thr …

no image

文字列変換系処理まとめ

Javaで文字列の変換(全角、半角など)の処理のまとめです。 ブログに記事として書こうと思ったのですが、丸々コピペになってしまうので、それじゃあ元リンクを紹介したほうがいいかなと思い、今日は基本的にリ …

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …

no image

JavaEEのトランザクションに関して

最近あまり触れていないJavaEEのトランザクションについて。 JavaEEの場合、EJB環境では@Statelessを付けることによりトランザクション管理を行うことができます。 [crayon-5f …

no image

try~catch~finallyで気を付けること

JavaでExceptionが発生したとき、基本的にはtry~catch~finallyをつかっているのですが、今回Exceptionが吐かれないという事態があったのでメモします。 [crayon-5 …