高度なカスタマイズ > Info*Engine ユーザーガイド > SOAP サービス > SOAP による Infor*Engine タスク呼び出し > SOAL リクエストの BLOB アタッチメント
  
SOAL リクエストの BLOB アタッチメント
添付資料を SOAP リクエストで使用して、少量のバイナリデータをアップロードおよびダウンロードできます。
* 
SOAP を使用して転送できるのは、比較的量の少ないバイナリデータのみです。より大きい BLOB のアップロードおよびダウンロードについては、BLOB のアップロードおよびダウンロードを参照してください。
SOAP リクエストにデータを添付するとき、"javax.activation.DataSource" および "java.io.InputStream" という 2 つの特殊なデータタイプが使用されます。これらの特殊なデータタイプでは、バイナリのコンテンツタイプをオプションでリストする、特殊フォーマットの SOAP コメントがサポートされています。コンテンツタイプを指定すると、予想されるコンテンツデータのタイプや返されるコンテンツデータのタイプを含む、より完全な WSDL を生成できます。たとえば、以下のような任意の有効なコンテンツタイプを指定できます。
image/.gif
image/.jpeg
application/octet-stream
コンテンツタイプを指定しない場合は、デフォルト値である application/octet-stream が使用されます。
javax.activation.DataSource
クライアントがバイナリデータを添付することを示します。このデータタイプは @param SOAP コメントでのみ使用されます。
以下のフォーマットを使用します。
@param javax.activation.DataSource file {contentType:content_type}
ここで、content_type はバイナリデータのコンテンツタイプです。
java.io.InputStream
タスクがバイナリデータで応答することを示します。このデータタイプは @return SOAP コメントでのみ使用されます。
以下のフォーマットを使用します。
@return java.io.InputStream {contentType:content_type}
ここで、content_type はバイナリデータのコンテンツタイプです。レスポンスが添付資料である場合、代入構文は指定されません。
Info*Engine では、添付資料とデータの両方を返すことはサポートしていません。タスクが SOAP に BLOB を生成すると、SOAP レスポンスに空のレスポンス要素が含まれます。
BLOB のアップロードの例
以下のタスクでは、BLOB をデータベース行に追加します。
<%@page language="java" session="false"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core"
                                                     prefix="ie"%>
<!--com.infoengine.soap.rpc.def
upload a blob
@param string filename - the filename to store
@param javax.activation.DataSource file - the file to store
(should be gif or jpeg)
-->
<ie:unit>
  <ie:webject name="Do-Sql" type="ACT">
    <ie:param name="INSTANCE" data="soapJDBCAdapter"/>
    <ie:param name="SQL" data="DELETE FROM BLOBTABLE WHERE
                                   name='$(@FORM[]filename[0])'"/>
    <ie:param name="CLASS" data="BLOBTEST"/>
    <ie:param name="GROUP_OUT" data="deleteResult"/>
    <ie:param name="BLOB_COUNT" data="0"/>
  </ie:webject>
  <ie:failure/>
</ie:unit>
<ie:webject name="Do-Sql" type="ACT">
  <ie:param name="INSTANCE" data="soapJDBCAdapter"/>
  <ie:param name="SQL" data="INSERT INTO BLOBTABLE VALUES
('$(@FORM[]filename[0])', NULL)"/>
  <ie:param name="CLASS" data="BLOBTEST"/>
  <ie:param name="GROUP_OUT" data="insertResult"/>
  <ie:param name="BLOB_COUNT" data="0"/>
  </ie:webject>
<ie:webject name="Put-Blob-Stream" type="OBJ">
  <ie:param name="INSTANCE" data="soapJDBCAdapter"/>
  <ie:param name="CLASS" data="BLOBTABLE"/>
  <ie:param name="ATTRIBUTE" data="FILECONTENT"/>
  <ie:param name="WHERE" data="(NAME='$(@FORM[]filename[0])')"/>
  <ie:param name="GROUP_OUT" data="$(@FORM[]group_out[])"
                                                default="output"/>
</ie:webject>
BLOB のダウンロードの例
以下のタスクでは、BLOB をデータベース行から取得します。
<%@page language="java" session="false"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core"
                                                     prefix="ie"%>
<!--com.infoengine.soap.rpc.def
download a blob
@param string filename - the file name of the blob/image to
download (value from ListBlobs call)
@return java.io.InputStream a stream that contains the blob
-->
<ie:webject name="Send-Blob-Stream" type="OBJ">
  <ie:param name="INSTANCE" data="soapJDBCAdapter"/>
  <ie:param name="CLASS" data="BLOBTABLE"/>
  <ie:param name="ATTRIBUTE" data="FILECONTENT"/>
  <ie:param name="MIMETYPE" data="'application/octet-stream'"/>
  <ie:param name="WHERE" data="(NAME='$(@FORM[]filename[0])')"/>
  <ie:param name="FILENAME" data="test.doc"/>
  <ie:param name="GROUP_OUT" data="$(@FORM[]group_out[])"
                                                default="output"/>
</ie:webject>