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オブジェクトの生成方法を次に示します。なお,ファイルは存在するファイルを指定してください。
- 添付ファイルのファイルパスを引数に指定し,javax.activation.FileDataSourceオブジェクトを生成します。
javax.activation.FileDataSource fdSource = new javax.activation.FileDataSource("C:\\sample.jpg");
- javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。
javax.activation.DataHandler dhandler = new javax.activation.DataHandler(fdSource);
(b) Javaオブジェクトを添付ファイルとして送信する場合
Javaオブジェクトを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。
- 添付ファイルとして送信するJavaオブジェクト(ここでは,java.awt.Imageオブジェクト)を生成します。
java.awt.Image attachments = Toolkit.getDefaultToolkit().createImage("sample.jpg");
- 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オブジェクトの生成方法を次に示します。
- 添付ファイルとして送信する文字列のjava.lang.Stringオブジェクトを生成します。
java.lang.String attachments = new java.lang.String("あいうえお");
- 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オブジェクトとして取得する場合
- 添付ファイルのデータをjava.io.InputStreamとして取得します。
受信したjavax.activation.DataHandlerオブジェクトから,getInputStream()メソッドでjava.io.InputStreamオブジェクトを取得します。
java.io.InputStream stream = dhandler.getInputStream();
(b) 添付ファイルを受信してjavax.activation.DataSourceオブジェクトとして取得する場合
- javax.activation.DataSourceオブジェクトを取得します。
受信したjavax.activation.DataHandlerオブジェクトから,getDataSource()メソッドで関連づけられたjavax.activation.DataSourceオブジェクトを取得します。
javax.activation.DataSource datasource =dhandler.getDataSource();
(c) 添付ファイルを受信してJavaオブジェクトとして取得する場合
添付ファイルを受信してJavaオブジェクト(ここではjava.awt.Image)として取得する場合の方法を次に示します。
- 添付ファイルのデータをオブジェクトとして取得します。
受信したjavax.activation.DataHandlerオブジェクトから,getContent()メソッドでオブジェクトを取得します。
java.lang.Object content = dhandler.getContent();
- 添付ファイルのMIMEタイプを取得します。
受信したjavax.activation.DataHandlerオブジェクトに対し,getContentType()メソッドを実行して,添付ファイルのMIMEタイプを取得します。
java.lang.String mimetype = dhandler.getContentType();
ここでは,mimetypeの内容として「image/jpeg」が取得されます。
- オブジェクトを適切な型にキャストします。
添付ファイルのMIMEタイプに応じて,オブジェクトを適切な型にキャストします。
java.awt.Image attachment = (java.awt.Image) content;
(d) 添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合
添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合の方法を次に示します。
- 添付ファイルのデータをオブジェクトとして取得します。
受信したjavax.activation.DataHandlerオブジェクトから,getContent()メソッドでオブジェクトを取得します。
java.lang.Object content = dhandler.getContent();
- 添付ファイルのMIMEタイプを取得します。
受信したjavax.activation.DataHandlerオブジェクトに対し,getContentType()メソッドを実行して,添付ファイルのMIMEタイプおよび文字コードを取得します。
ava.lang.String mimetype = dhandler.getContentType();
ここでは,mimetypeの内容として「text/plain; charset=UTF-8」が取得されます。
- オブジェクトを適切な型にキャストします。
添付ファイルのMIMEタイプに応じて,オブジェクトを適切な型にキャストします。
java.lang.String attachment = (java.lang.String) content;
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.