#実現したいこと
ここでは、ある一連の処理を実現する際に発生するファイルの一時格納先をDataSpiderサーバとするような使い方を実現します。
その際に利用するプロトコルはHTTP
を前提としているので、機能としては以下のようなものになります。
- HTTP POSTメソッドでファイルをアップロードする
- ファイルリストをHTTP GETメソッドで取得する
きっかけはAITalk(R)という音声合成を行うサービスで生成された音声ファイルを、Twilioから利用するときにファイルがWeb上に公開されていなければいけないという要件を実現するために考えた仕組みになります。
#DataSpiderの仕様
DataSpiderのヘルプのHTTPトリガー
に以下のような記載があります。
このディレクトリにjspもしくはhtmlファイルを配置することでエラーページを返却することができるのですが、ここをテンポラリとして利用します。
・フォワードできるページはJSPまたはHTMLです。
・JSPファイルは、$DATASPIDER_HOME/server/system/kernel/modules/webcontainer/META-INF/catalina/webapps/dataspider以下に配置してください。
#スクリプトの実装
##HTTP POSTメソッドでファイルをアップロードする
- 保存先の作成
今回はtmp
配下にstore
というディレクトリを作成しました。ここにファイルの実態が保存されます。 - マウント設定
コントロールパネル
→マウント設定
を開いて図のようにマウント設定を行います。 - スクリプトの作成(完成図)
3. スクリプト入力変数としてバイナリ型
と文字列型
の二種類を用意します。
バイナリ型にはファイルの実体が格納され、文字列型にはPOSTされるファイル名が格納されます。
ここで作成しているバイナリ型のスクリプト変数名
がPOSTメソッドのマルチパートフォームで送信される際のパート名
になります。そして、ファイル名を取得するにパート名
+_filename
とした変数を用意しておきます。
4.ツールパレット
→変換
→基本
→マッピング
をキャンバスにドラッグ&ドロップ
5.ツールパレット
→ファイル
→ファイルシステム
→ファイルシステム書き込み
をキャンバスにドラッグ&ドロップします。
入力元をmapping
、ディレクトリを先ほど作成したstore
にします。
6. マッピングの設定を行います。
- filetypeには単一行文字列定数ロジック
を利用してfile
- pathには単一行文字列定数ロジック
を利用して/tmp/store/${file_filename}
※1
- dataにはスクリプト入力変数のfile
をそれぞれ設定したら、スクリプトは完成です。
スクリプトを保存してプロジェクトをサービスとして登録します。
※1:${スクリプト変数名}
はDataSpiderにおける入力フィールドの記述方法です。 - メニュー→
マイトリガー
から新しいHTTPトリガー
を作成します。
ここでは実行パスをstore
にしたので、POST先がhttp://{DataSpiderServer稼働OSのホスト名またはIPアドレス>:<DataSpiderServerのポート番号}/dataspider/trigger/store
になっています。 - 実行パスの設定が終わったら次へ進んで登録したサービスと紐付けます。
あとは保存して終了です。
#実行
生成されたURLに対してPOSTメソッドでファイルを送ってみます。
ここではDHCというChromeのプラグインを利用しています。
エクスプローラを開いて/tmp/store
を確認すると正しく取得できていることがわかります。
#最後に
思いの外長くなったので「ファイルリストをHTTP GETメソッドで取得する」機能は別立てで記載することにしました。