이미지 파일의 EXIF 정보를 얻는 예제입니다.
- 설명
-
EXIF 데이터를 지원하는 이미지 파일의 경우 EXIF 정보를 추출할 수 있습니다.
// EXIF 정보를 추출되도록 설정해야 합니다. dx.setExtractingEXIF(true); var item = dx.getItemByIndex(0); // 0번째 파일의 exif 문자열 정보를 얻습니다. alert(item.exif);
EXIF 정보는 '[SPLT]' 문자열로 구분되어 있습니다.
키=값 형식으로 얻기 위해서는 exif 속성 값을 파싱 해야 합니다.
주의) EXIF는 모든 이미지 형식이 지원하는 데이터가 아닙니다.
function parseExif(data) { if (!data) return ""; // 구분자를 얻습니다. 기본값은 '[SPLT]'입니다. var splitter = dx5.get("dext5").getSplitString(); var tokens = data.split(splitter); var str = ""; for (var i = 0, len = tokens.length; (i + 1) < len; i += 2) { str += " " + tokens[i] + ": " + tokens[i + 1] + ((i + 1) < len ? "\n" : ""); } return str; }
서버에는 DEXTUploadX5_EXIFData 폼 이름으로 EXIF 정보가 전달됩니다.
# 서버 측 설정입니다. ... List<FileItem> items = dextnj.getFileItems(); // FileUpload#getFormItems 메소드를 사용하여 폼 이름으로 클라이언트에서 전달된 EXIF 콜렉션 객체를 얻을 수 있습니다. List<FormItem> exifs = dextnj.getFormItems("DEXTUploadX5_EXIFData"); StringBuffer sb = new StringBuffer(); FileItem file = null; FormItem form = null; String[] tokens = null; StringBuffer exif = new StringBuffer(); for (int i = 0; i < items.size(); i++) { file = items.get(i); form = exifs.get(i); if (file.isEmpty() == false) { file.save(); tokens = form.getValue().split("\\[SPLT\\]"); exif.delete(0, exif.length()); for (int k = 0, len = tokens.length; (k + 1) < len; k += 2) { exif.append(String.format("%1$s:%2$s\n", tokens[k], tokens[k + 1])); } ... } } ...
- 예제
-
JPG 이미지 파일 1개만 등록할 수 있도록 필터 처리가 되었습니다.