メタデータを扱う

ホーム > Basic examples > 例08

説明

メタデータは'key=value'の形式で表現される追加データで、ファイルごとに保持することができます。(バージョン3.2.0.0から、IEモジュールはローカルファイルに対してのみメタデータを持つことができるようになった)。

メタデータを登録するには、ローカルファイルのindex(order)を使ってkeyとvalueを登録します。

var dx = dx5.get("component-id");

// 6番目の項目のメタデータのキー "user "の値を返す。
var userValue = dx.getMetaDataByIndex(5, "user");

// 6番目の項目のメタデータ内の "user "キーの値を "ABC "に設定する。
dx.setMetaDataByIndex(5, "user", "ABC");

// 6番目の項目のメタデータの "user "キーを削除する。
dx.deleteMetaDataByIndex(5, "user");

メタデータはローカルファイルのアップロード時にサーバーに渡されます。

サーバー側のコードでは、"DEXTUploadX5_MetaData "がフォーム名として渡されるので、フォームデータからメタデータを取得することができます。

フォーム名("DEXTUploadX5_MetaData")に渡されるメタデータはアップロードされたファイルの順番に従います。

# サーバーサイド					
						
List<FileItem> items = dextnj.getFileItems();

// フォーム名でコレクションオブジェクトを取得するには、FileUpload#getFormItemsメソッドを使用します。
List<FormItem> metadata = dextnj.getFormItems("DEXTUploadX5_MetaData");

StringBuffer sb = new StringBuffer();	

FileItem file = null;
FormItem form = null;
	
for (int i = 0; i < items.size(); i++) {
	file = items.get(i);
	form = metadata.get(i);
	
	if (file.isEmpty() == false) {
		file.save();
		
		// メタデータと保存されたファイルの場所をレスポンスデータバッファに書き込む。
		sb.append(String.format("F:%1$s, M:%2$s\n", file.getFilename(), form.getValue()));
	}
} 
...

1つのファイルに対して複数のメタデータがある場合、サーバーに渡されるメタデータは、「key1=value1[SPLT]key2[SPLT]value2[SPLT]key3[SPLT]value3」という形式ではなく、「key1=value1[SPLT]key2=value2[SPLT]key3=value3」という形式になります。

データを得るには、トークンを"[SPLT]"という文字列で区切り、奇数番目のキーをキー、偶数番目のキーを値とする。

メタデータはローカルファイルにのみ適用されます。(ローカルファイルを追加してテストする)