アップロード済み BLOB を取得する Webject の制御
BLOB が Web ページまたは Info*Engine ベースのアプリケーションから Info*Engine にアップロードされる場合、Info*Engine では、BLOB を使用する Adapter Webject や、各 Webject が使用する BLOB の数を決定できません。デフォルトでは、Info*Engine は利用可能な BLOB をすべて、最初の Adapter Webject (ACT または OBJ タイプの Webject) に送信します。最初の Adapter webject が BLOB を使用する Webject と異なる場合があります。この場合は、Info*Engine のデフォルトの動作が必ずしも適切ではありません。
BLOB の Webject による使用方法を制御するには、BLOB_COUNT パラメータを Adapter Webject に含めます。このパラメータで、Adapter Webject に送信する BLOB 数を指定します。BLOB を Webject に送信しない場合は、値として 0 を指定できます。BLOB_COUNT パラメータを省略すると、残りの BLOB がすべて Webject に送信されます。
以下の UploadBlob.xml の例のタスクには、3 つの Adapter Webbject が含まれます。最初の 2 つの Webject (Do-Sql) はデータベースに対する行の削除と追加を行い、BLOB を使用しません。これらの Webject では、BLOB_COUNT パラメータは 0 に設定されます。第 3 の Webject (Put-Blob-Stream) は BLOB を保存する Webject で、1 つの BLOB を受け入れるように定義されています。Webject のパラメータで使用する @FORM 変数の値は、前のセクションで説明したフォームと似たフォームで指定できます。
|
BLOB 送信先の Webject を除くすべての Webject に対し、BLOB_COUNT パラメータを 0 に設定する必要があります。
|
このタスクの例では、データベースに以下のコラムがあると見なします。
• BLOB の名前を含む NAME コラム
• BLOB データを含む FILECONTENT コラム
タスクの例のコードを以下に示します。
<%@page language="java" session="false"%>
<%@ taglib uri="http://www.ptc.com/infoengine/taglib/core"
prefix="ie" %>
<!--
Upload a file from the browser and save in an oracle
blob column.
--/>
<ie:webject name="Do-Sql" type="ACT">
<ie:param name="INSTANCE" data="$(FORM[]instance[])"
default="jdbcAdapter"/>
<ie:param name="SQL"
data="DELETE FROM BLOBTEST WHERE NAME=
'$(FORM[]filename[0])'"/>
<ie:param name="CLASS" data="BLOBTEST"/>
<ie:param name="GROUP_OUT" data="TEMP"/>
<ie:param name="BLOB_COUNT" data="0"/>
</ie:webject>
<ie:webject name="Do-Sql" type="ACT">
<ie:param name="INSTANCE" data="$(FORM[]instance[])"
default="jdbcAdapter"/>
<ie:param name="SQL"
data="INSERT INTO BLOBTEST VALUES
('$(FORM[]filename[0])', EMPTY_BLOB())"/>
<ie:param name="CLASS" data="BLOBTEST"/>
<ie:param name="GROUP_OUT" data="TEMP"/>
<ie:param name="BLOB_COUNT" data="0"/>
</ie:webject>
<ie:webject name="Put-Blob-Stream" type="OBJ">
<ie:param name="INSTANCE" data="$(FORM[]instance[])"
default="jdbcAdapter"/>
<ie:param name="CLASS" data="BLOBTEST"/>
<ie:param name="ATTRIBUTE" data="FILECONTENT"/>
<ie:param name="WHERE"
data="(NAME='$(FORM[]filename[0])')"/>
<ie:param name="GROUP_OUT" data="TEMP"/>
</ie:webject>