28.5.1 添付ファイルのインスタンスを生成する方法(wsi:swaRef形式)
添付ファイルのオブジェクトとして,javax.activation.DataHandlerオブジェクトを生成します。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タイプについては,「28.4.2(3) 添付ファイルの拡張子とMIMEタイプのマッピング」を参照してください。 |
添付ファイルとして送信するオブジェクトによって,javax.activation.DataHandlerオブジェクトを生成する方法が異なります。送信するオブジェクトごとに,生成する方法を示します。
- 〈この項の構成〉
(1) 存在するファイルを添付ファイルとして送信する方法
すでに存在するファイルを添付して送信する場合の手順を示します。
-
javax.activation.FileDataSourceオブジェクトを生成します。
送信する添付ファイルのファイルパスを引数に指定して,javax.activation.FileDataSourceオブジェクトを生成します。
javax.activation.FileDataSource fdSource = new javax.activation.FileDataSource("/tmp/sample.jpg");
-
javax.activation.DataHandlerオブジェクトを生成します。
javax.activation.FileDataSourceオブジェクトを引数に指定して,javax.activation.DataHandlerオブジェクトを生成します。
javax.activation.DataHandler dhandler = new javax.activation.DataHandler(fdSource);
(2) Javaオブジェクトを添付ファイルとして送信する方法
Javaオブジェクトを添付ファイルとして送信する場合の手順を示します。
-
Javaオブジェクトを生成します。
ここでは,添付ファイルとして送信するjava.awt.Imageオブジェクトを生成します。
java.awt.Image attachments = Toolkit.getDefaultToolkit().createImage("sample.jpg");
-
javax.activation.DataHandlerオブジェクトを生成します。
Javaオブジェクトと,Javaオブジェクトに対応するMIMEタイプを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。
javax.activation.DataHandler dhandler = new javax.activation.DataHandler(attachments, "image/jpeg");
(3) java.lang.Stringオブジェクトを添付ファイルとして送信する方法
java.lang.Stringオブジェクトを添付ファイルとして送信する場合の手順を示します。
-
java.lang.Stringオブジェクトを生成します。
添付ファイルとして送信する文字列のjava.lang.Stringオブジェクトを生成します。
java.lang.String attachments = new java.lang.String("あいうえお");
-
javax.activation.DataHandlerオブジェクトを生成します。
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");
(4) javax.activation.DataHandlerオブジェクト生成時の注意事項
wsi:swaRef形式の添付ファイルとして送信するオブジェクトが,テキストファイル,XMLファイル,またはjava.lang.Stringオブジェクト(文字列)の場合,javax.activation.DataHandlerクラスのDataHandler(Object, String)コンストラクタを使用することで,オブジェクトに含まれる文字の文字コードを指定できます。
javax.activation.DataHandlerオブジェクトの生成時に文字コードを指定しない場合,送信するオブジェクトはデフォルトの文字コード(US-ASCII)でエンコードされます。送信するオブジェクトにデフォルトの文字コード(US-ASCII)以外の文字が含まれている場合は,不正な添付ファイルを送信する扱いとなるため,特に日本語を含む場合には,適切な文字コードを指定してください。
送信するオブジェクトがXMLファイルの場合,XML宣言に指定している文字コードは使用されません。デフォルトの文字コード(US-ASCII),またはjavax.activation.DataHandlerオブジェクトの生成時に指定した文字コードでエンコードされて,XMLファイルが送信されます。
文字コードを指定するには,DataHandler(Object, String)コンストラクタの第2引数で指定するオブジェクトのMIMEタイプにcharsetパラメタを付けます。DataHandler(Object, String)コンストラクタの第2引数の記述形式を次に示します。
送信するオブジェクトのMIMEタイプ+";"+"charset"+"="+文字コード※
- 注※
-
大文字または小文字を区別しません。また,JDKがサポートしていない文字コードおよび空文字を指定できません。