메타데이터를 다루는 예제

Home > 기본 예제 > 예제 02

설명

메타데이터는 '키=값' 형식으로 나타내는 부가 데이터이며 파일마다 가질 수 있다.

메타데이터를 등록하려면, 로컬 파일의 인덱스(순서)를 이용하여 이름과 값을 등록한다.

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

// 6번째 항목의 메타데이터 중 "user" 키에 대한 값을 반환한다.
var userValue = dx.getMetaDataByIndex(5, "user");

// 6번째 항목의 메타데이터 중 "user" 키에 대한 값을 "홍길동"으로 설정한다.
dx.setMetaDataByIndex(5, "user", "홍길동");

// 6번째 항목의 메타데이터 중 "user" 키를 삭제한다.
dx.deleteMetaDataByIndex(5, "user");

메타데이터는 로컬 파일이 업로드가 될 때, 함께 서버로 전달된다.

서버 측 코드에서는 "DEXTUploadX5_MetaData" 폼 이름으로 전달이 되므로 폼 데이터로부터 메타데이터를 얻을 수 있다.

"DEXTUploadX5_MetaData" 폼 이름으로 전달되는 메타데이터는 업로드되는 파일의 순서를 따른다.

# Server side						
						
@PostMapping(value = "/upload-metadata", produces = "text/plain;charset=UTF-8")
@ResponseBody
public String uploadMetadata(DEXTUploadX5List list) throws IOException {		
    FileItem fileItem = null;
    List<String> data = new ArrayList<>();
    String metadata = null;
		
    for (DEXTUploadX5Item item : list) {
        fileItem = (FileItem)item.getFileData();
        fileItem.save();
        // 메타데이터 문자열 정보를 얻는다.
        metadata = item.getMetaData();
        data.add(String.format("%s, %s", fileItem.getFilename(), metadata));
    }
	
    return String.join("\n", data);
}

하나의 파일에 여러 메타데이터가 있을 경우, 서버로 전달되는 메타데이터는 key1=value1[SPLT]key2=value2[SPLT]key3=value3 포맷이 아니라,
key1[SPLT]value1[SPLT]key2[SPLT]value2[SPLT]key3[SPLT]value3 포맷으로 전달된다.

데이터를 얻으려면 "[SPLT]" 문자열로 토큰을 분리한 후, 홀수번 째는 키, 짝수번 째는 값으로 사용한다.

예제

메타데이터는 로컬 파일에만 적용된다. (테스트하려면 로컬 파일을 추가)