---
schema_version: "1"
id: 79cc8fddfcdea10621339f2a9ec09f1ed283967912572eaa84e390bc92696075
title: Base64 のデコードとエンコード
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.5/dataweave-cookbook-decode-encode.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-decode-encode
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c787a95c2d533b8262ae4938d0a24f9110ba4c7cd85205b557521ddefde417d2
description: MuleSoft Documentation Site
release: "2.5"
latest: false
---
# Base64 のデコードとエンコード

次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

## [](#ex01)PDF ファイルの Base64 へのエンコード

この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の 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"`​ を使用することもこの例では有効です。

DataWeave スクリプト:

```dataweave
%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)
```

出力 (部分的な結果):

```json
JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx
...
```

## [](#ex02)Base64 のデコード

この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の 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"`​ を使用することもこの例では有効です。

DataWeave スクリプト:

```dataweave
%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 のテキスト表現です。

出力 (部分的な結果):

```json
%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
...
```

## [](#xml_config)XML の設定例

Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。

1. Anypoint Studio で Mule プロジェクトを作成します。
    
    1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。
    2. Mule プロジェクトの名前を入力します。
    3. **\[Finish (完了)\]**​ をクリックします。
2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。
    
    1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。
    2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。
    3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。
    4. **\[Add (追加)\]**​ をクリックします。
    5. **\[Finish (完了)\]**​ をクリックします。
3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。
4. Anypoint Studio の Mule フローの ​`<mule/>`​ 要素間に、次の例をコピーして貼り付けます。
    
    ```XML
    <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`​ に置き換えることができます。
5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。
6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。
    
    - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。
    - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。
7. Studio でプロジェクトを実行します。
8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。
    
    このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。

## [](#関連情報)関連情報

- [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-binaries)
- [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook)