1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

javascriptを使ってBase64テキストをBinary Data型にする

Posted at

概要

OutSystemsではBinary Data型というものが存在します。
Binary Data型については以前書いた以下の記事を見てください。
https://qiita.com/you2143/items/bf9a11e000fe580167b5
このBinary Data型ですが、上記記事の「ファイルアップロード時の動きについて」の個所を見ていただくとわかる通り、Base64テキストをBinary Data型のコンストラクタに渡せばインスタンスを生成してくれます。
今回はBase64テキストをjavascriptを使ってBinary Data型にする方法を記載します。

参考にさせていただいたForgeのモジュール

やり方

  1. javascript要素を配置します。
    javascript.png

  2. 配置したjavascript要素のInputParameterとOutputParameterを定義します。
    image.png
    image.png

  3. javascript要素のコードに以下を追記します。

$parameters.Binary = $parameters.Base64;

これで、javascript要素のInputParameterにBase64テキストを渡すことでOutPutParameterからBinary Data型を取得することができます。

注意
InputParameterには、ファイルをBase64エンコーディングした文字列のうち、バイナリ部分だけを渡してください。
(data:image/png;base64,iVBORw0KG...のうち、data:image/png;base64,の部分は削除してください。)

どうしてBinary Data型を取得することが出来るのか

冒頭にも書いた通り、Binary Data型はBase64テキストをコンストラクタに渡すことでインスタンス化することが出来ます。勘のいい方はもしかしたら気づくかもしれませんが、OutPutParameterのBinary Data型に代入した文字列は、どこかのタイミングで文字列をそのままコンストラクタに渡すような動きをします。
(どのタイミングかまではしっかりと調べていません。おそらくjavascript要素内のコードをすべて実行した後?)
そのため、上記のようなコードでOutSystemsのBinary Data型を取得することが可能になります。
なお、Binary Data型はある程度文字列のチェックを行ってくれるのか分かりませんが、Base64エンコードで使用できない文字列を渡すと値が「Unavailable」といった内容になります。
image.png

終わりに

触り始めてから日が浅く、不明なことが多いOutSystemsではありますが、今回のように裏側の処理を知ることでより型安全にシステムを構築しようと考えるきっかけになりました。
この記事が他の方の参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?