Photoshop Extensionの開発13 ローカルディレクトリーとのやりとり

javascript, Photoshop

通常クライアントサイドのjavascriptではセキュリティーの関係でローカルのファイルのやりとりはできないようになっている。Extensionのパネルを自作する上でブラウザベースのパネルでどうやってローカルのディレクトリーやファイルとやりとりするか戸惑うのではないかと思う。勿論jsx自体にもローカルのファイルとやりとりするメソッドはあるが今回はパネル上でやりとりする方法を見ていく。

まず専用のファイル選択ダイアログを呼び出すメソッドがCEP側で用意されている。jsx側でも似たようなメソッドがあるがパネル側で一度ファイル情報等を記録した場合等はCEP側で呼び出した方が良いだろう。

showOpenDialogメソッドの引数に値を指定する事でオプションの指定もできる。以下詳細

第一引数、ブーリアン、trueだと複数のファイルかフォルダーを選べる。
第二引数、ブーリアン、tureだとフォルダーのみ選択可能、falseだとファイルのみ
第三引数、String ダイアログを開いた時の表示タイトル
第四引数、String ダイアログに表示される初期のディレクトリー null か 空””だと最後にダイアログで選択したディレクトリーを表示
第五引数、配列 拡張子を配列の中に指定(ピリオドは入れない) フォルダー選択がtrueの場合は無視

ファイル(フォルダー)選択後オブジェクトが以下のプロパティーと共に帰ってきます。
data 配列 選択されたファイルのフルパス
err 稼働の状態(多分単純にエラーがあるかないかの状態かと)

保存ダイアログも用意されているがこちらはあまり使い時はないだろう。パネル上で保存処理をする事自体あまりないだろうしPhotoshop上で加工したドキュメントデータを保存するような時はPhotoshopのjsxの保存ダイアログを使った方がはるかに効率できだろう。

保存ダイアログのオプションは以下

第一引数 String タイトル
第二引数 String ダイアログに表示される初期のディレクトリー null か 空””だと最後にダイアログで選択したディレクトリーを表示
第三引数 配列 選択可能拡張子を配列の中に指定(ピリオドは入れない)
第四引数 String デフォルトのファイルネーム
第五引数 String friendlyFilePrefix ウインドウ上で拡張子を選択時に拡張子の前に置かれる文字列。winのみ
例えば
fileTypes = [“gif”, “jpg”, “jpeg”, “png”, “bmp”, “webp”, “svg”];
*friendlyFilePrefix = “Images (*.gif;*.jpg;*.jpeg;*.png;*.bmp;*.webp;*.svg)”;
第六引数 String 保存ボタン上に表示される文字列 macのみ デフォルトだと”Save”(日本語だと多分”保存”)
第七引数 String ウインドウ上でファイル名の前に置かれるテキスト macのみ デフォルトだと”File name:”(日本語だと多分”名前”)
ファイル(フォルダー)選択後オブジェクトが以下のプロパティーと共に帰ってきます。
data 配列 選択されたファイルのフルパス
err 稼働の状態(多分単純にエラーがあるかないかの状態かと)

英文だが詳細はこちらから参照できる。

2020年9月
CC2020だと取得したファイルの頭にfileスキームが付くようになったので詳しくはこちら。

Beer 寄付してサイトを応援する。