Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (application/octet-stream
) をバイナリに変換し、そのバイナリを text/plain
形式で出力することで、XML 設定の Read 操作で変換をシミュレートします。
この例では、以下の関数を使用します。
バイナリ値を Base64 文字列に変換する dw::core::Binaries
モジュールの toBase64
。
PDF ファイルを入力する Core (dw::Core)
モジュールの readUrl
。
この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの src/main/resources
ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、"application/octet-stream"
として MIME タイプを指定します。2 番目の readUrl
引数として "binary"
を使用することもこの例では有効です。
%dw 2.0
import * from dw::core::Binaries
var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream")
output text/plain
---
toBase64(myPDF as Binary)
JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx
...
この例では、Base64 ファイルストリーム (application/octet-stream
) をバイナリに変換し、そのバイナリを application/PDF with binary
形式で出力することで、XML 設定の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。
この例では、以下の関数を使用します。
Base64 文字列をバイナリ値に変換する dw::core::Binaries
モジュールの fromBase64
。
PDF ファイルを入力する readUrl
。
この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの src/main/resources
ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の readUrl
引数として MIME タイプ "binary"
を使用することもこの例では有効です。
%dw 2.0
import * from dw::core::Binaries
var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream")
var myPDFasBinary = toBase64(myPDF as Binary)
output application/PDF with binary
---
fromBase64(myPDFasBinary as String) as Binary
この出力は PDF のテキスト表現です。
%PDF-1.6
%����
37 0 obj <</Linearized 1/L 20597/O 40/E 14115/N 1/T 19795/H [ 1005 215]>>
endobj
xref
37 34
0000000016 00000 n
...
Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。
Anypoint Studio で Mule プロジェクトを作成します。
[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] を選択します。
Mule プロジェクトの名前を入力します。
[Finish (完了)] をクリックします。
[Mule Palette (Mule パレット)] の [Add Module (モジュールを追加)] を使用して、File Connector を追加します。
[Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)] をクリックします。
[Add Dependencies to Project (連動関係をプロジェクトに追加)] ウィンドウで、検索項目に「file
」と入力します。
[Available modules (使用可能なモジュール)] で [File Connector] をクリックします。
[Add (追加)] をクリックします。
[Finish (完了)] をクリックします。
Studio キャンバスで [Configuration XML (設定 XML)] タブに移動します。
Anypoint Studio の Mule フローの <mule/>
要素間に、次の例をコピーして貼り付けます。
<http:listener-config name="HTTP_Listener_config"
doc:name="HTTP Listener config" >
<http:listener-connection
host="0.0.0.0"
port="8081" />
</http:listener-config>
<file:config name="File_Config"
doc:name="File Config" >
<file:connection workingDir="/Users/me/Downloads" />
</file:config>
<flow name="encode-decode-base64">
<http:listener doc:name="Listener"
path="/transform"
config-ref="HTTP_Listener_config"/>
<file:read doc:name="Read"
config-ref="File_Config"
path="pdf-test.pdf" />
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
import * from dw::core::Binaries
output text/plain
---
toBase64(payload as Binary)]]></ee:set-payload>
</ee:message>
</ee:transform>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
import * from dw::core::Binaries
output application/pdf with binary
---
fromBase64(payload as String) as Binary]]></ee:set-payload>
</ee:message>
</ee:transform>
<file:write doc:name="Write"
path="/Users/me/pdf-test-result.pdf"/>
<set-payload
value='#["PDF file created in the directory specified in the Write operation."]'
doc:name="Set Payload" />
</flow>
2 番目の Transform Message コンポーネントのディレクティブ output application/pdf with binary
を output application/octet-stream
に置き換えることができます。
選択した PDF ファイルをマシンのローカルディレクトリに配置します。
Read および Write 操作の入力ディレクトリと出力ディレクトリを修正します。
Read 操作で、[File Path (ファイルパス)] の値 `/Users/me/Downloads" を PDF ファイルの場所に変更します。
Write 操作で、[Path (パス)] の値 /Users/me/pdf-test.pdf"
をファイルを出力する場所とファイル名に変更します。
Studio でプロジェクトを実行します。
0.0.0.0:8081/transform
をブラウザーに読み込みます。
このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ PDF file created in the directory specified in the Write operation.
を含む別の transform
ファイルが生成されます。