Cosminexus SOAPアプリケーション開発ガイド

[目次][用語][索引][前へ][次へ]

3.5.3 添付ファイルのJavaインスタンス生成とデータ取得

添付ファイルのJava型であるjavax.activation.DataHandlerは,JavaBeans Activation Framework(JAF)の型です。そのため,JAFを使用して任意のMIMEタイプの添付ファイルを利用できます。

添付ファイルのインスタンス生成方法とデータ取得方法について説明します。

<この項の構成>
(1) インスタンスの生成方法
(2) 添付ファイルのデータ取得方法

(1) インスタンスの生成方法

添付ファイルのオブジェクトであるjavax.activation.DataHandlerオブジェクトの生成方法を説明します。

まず,javax.activation.DataHandlerクラスのコンストラクタを次の表に示します。

表3-16 javax.activation.DataHandlerクラスのコンストラクタ

項番 利用ケース コンストラクタ 引数の説明
1 ファイルを添付する DataHandler(javax.activation.DataSource ds)

第1引数
javax.activation.DataSourceオブジェクトです。javax.activation.FileDataSourceクラスのオブジェクトを指定できます。
2 メモリ上のオブジェクトを添付する DataHandler(java.lang.Object obj, java.lang.String mimeType)

第1引数
Javaオブジェクトです。

第2引数
オブジェクトのMIMEタイプです。指定できるMIMEタイプについては,「3.5.1(3) 添付ファイルに対応するMIMEタイプ」を参照してください。

添付ファイルとして送信するオブジェクトによって,javax.activation.DataHandlerオブジェクトの生成方法が異なります。生成方法の例を次に示します。

(a) ファイルを添付ファイルとして送信する場合

ファイルを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。なお,ファイルは存在するファイルを指定してください。

  1. 添付ファイルのファイルパスを引数に指定し,javax.activation.FileDataSourceオブジェクトを生成します。
     
    javax.activation.FileDataSource fdSource = new javax.activation.FileDataSource("C:\\sample.jpg");
     
  2. javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。
     
    javax.activation.DataHandler dhandler = new javax.activation.DataHandler(fdSource);
(b) Javaオブジェクトを添付ファイルとして送信する場合

Javaオブジェクトを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。

  1. 添付ファイルとして送信するJavaオブジェクト(ここでは,java.awt.Imageオブジェクト)を生成します。
     
    java.awt.Image attachments = Toolkit.getDefaultToolkit().createImage("sample.jpg");
     
  2. Javaオブジェクト,およびJavaオブジェクトに対応するMIMEタイプを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。
     
    javax.activation.DataHandler dhandler = new javax.activation.DataHandler(attachments, "image/jpeg");
(c) java.lang.Stringオブジェクトを添付ファイルとして送信する場合

java.lang.Stringオブジェクトを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。

  1. 添付ファイルとして送信する文字列のjava.lang.Stringオブジェクトを生成します。
     
    java.lang.String attachments = new java.lang.String("あいうえお");
     
  2. java.lang.Stringオブジェクト,およびMIMEタイプを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。
    java.lang.Stringオブジェクトは,charsetパラメタに指定された文字コードでエンコードされます。
     
    javax.activation.DataHandler dhandler = new javax.activation.DataHandler(attachments, "text/plain; charset=UTF-8");
     

注意事項
javax.activation.DataHandler(Object, String)コンストラクタの第1引数に,日本語を含むjava.lang.Stringオブジェクトを指定する場合は,第2引数にそのMIMEタイプおよびcharsetパラメタで適切な文字コードを指定する必要があります。javax.activation.DataHandler(Object, String)コンストラクタの第2引数の記述形式を次に示します。
 
MIMEタイプ + ";" + "charset" + "=" + 文字コード
なお,charsetパラメタを指定する場合は,次の点に注意してください。
  • charsetパラメタを指定しないと,添付ファイルの文字列がデフォルトの文字コード(US-ASCII)でエンコードされます。そのため,添付ファイルの文字列がUS-ASCII以外の文字を含んでいる場合,不正な添付ファイルが送信されてしまいます。添付ファイルの文字列がUS-ASCII以外の文字を含んでいる場合は,必ずcharsetパラメタを指定してください。
  • charsetパラメタは,添付ファイルとしてStringオブジェクトを送信する場合だけ指定できます。JPEGなどのバイナリデータを送信する場合は指定できません。
charsetパラメタの指定値(文字コード)については,次の点に注意してください。
  • 大文字/小文字は区別されません。
  • JDKがサポートしていない文字コードおよび空文字は指定できません。

(2) 添付ファイルのデータ取得方法

添付ファイルのデータ取得方法を次に示します。なお,次の指定例に示す「dhandler」は,受信したjavax.activation.DataHandlerオブジェクトです。

(a) 添付ファイルを受信してjava.io.InputStreamオブジェクトとして取得する場合
  1. 添付ファイルのデータをjava.io.InputStreamとして取得します。
    受信したjavax.activation.DataHandlerオブジェクトから,getInputStream()メソッドでjava.io.InputStreamオブジェクトを取得します。
     
    java.io.InputStream stream = dhandler.getInputStream();
     
(b) 添付ファイルを受信してjavax.activation.DataSourceオブジェクトとして取得する場合
  1. javax.activation.DataSourceオブジェクトを取得します。
    受信したjavax.activation.DataHandlerオブジェクトから,getDataSource()メソッドで関連づけられたjavax.activation.DataSourceオブジェクトを取得します。
     
    javax.activation.DataSource datasource =dhandler.getDataSource();
     
(c) 添付ファイルを受信してJavaオブジェクトとして取得する場合

添付ファイルを受信してJavaオブジェクト(ここではjava.awt.Image)として取得する場合の方法を次に示します。

  1. 添付ファイルのデータをオブジェクトとして取得します。
    受信したjavax.activation.DataHandlerオブジェクトから,getContent()メソッドでオブジェクトを取得します。
     
    java.lang.Object content = dhandler.getContent();
     
  2. 添付ファイルのMIMEタイプを取得します。
    受信したjavax.activation.DataHandlerオブジェクトに対し,getContentType()メソッドを実行して,添付ファイルのMIMEタイプを取得します。
     
    java.lang.String mimetype = dhandler.getContentType();
     
    ここでは,mimetypeの内容として「image/jpeg」が取得されます。
  3. オブジェクトを適切な型にキャストします。
    添付ファイルのMIMEタイプに応じて,オブジェクトを適切な型にキャストします。
     
    java.awt.Image attachment = (java.awt.Image) content;
     
(d) 添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合

添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合の方法を次に示します。

  1. 添付ファイルのデータをオブジェクトとして取得します。
    受信したjavax.activation.DataHandlerオブジェクトから,getContent()メソッドでオブジェクトを取得します。
     
    java.lang.Object content = dhandler.getContent();
     
  2. 添付ファイルのMIMEタイプを取得します。
    受信したjavax.activation.DataHandlerオブジェクトに対し,getContentType()メソッドを実行して,添付ファイルのMIMEタイプおよび文字コードを取得します。
     
    ava.lang.String mimetype = dhandler.getContentType();
     
    ここでは,mimetypeの内容として「text/plain; charset=UTF-8」が取得されます。
     
  3. オブジェクトを適切な型にキャストします。
    添付ファイルのMIMEタイプに応じて,オブジェクトを適切な型にキャストします。
     
    java.lang.String attachment = (java.lang.String) content;