설명
메타 데이터는 로컬 파일에서만 사용할 수 있는 부가 데이터로써 '키=값' 형식으로 등록이 된다.
메타 데이터를 등록하려면, 로컬 파일의 인덱스(순서)를 이용하여 이름과 값을 등록한다.
var dx = dx5.get("컴포넌트 아이디");
// 6번째 항목의 메타 데이터 중 "user" 키에 대한 값을 반환한다.
var userValue = dx.getMetaDataByIndex(5, "user");
// 6번째 항목의 메타 데이터 중 "user" 키에 대한 값을 "홍길동"으로 설정한다.
dx.setMetaDataByIndex(5, "user", "홍길동");
// 6번째 항목의 메타 데이터 중 "user" 키를 삭제한다.
dx.deleteMetaDataByIndex(5, "user");
메타 데이터는 로컬 파일이 업로드가 될 때, 함께 서버로 전달된다.
서버 측 코드에서는 "DEXTUploadX5_MetaData" 폼 이름으로 전달이 되므로 폼 데이터로부터 메타 데이터를 얻을 수 있다.
"DEXTUploadX5_MetaData" 폼 이름으로 전달되는 메타 데이터는 업로드되는 파일의 순서를 따른다.
# 서버 측 설정
using (var dext = new DEXTUpload.NET.FileUpload())
{
var sb = new StringBuilder();
var files = dext.GetFileElements("DEXTUploadX5_FileData");
// DEXTUploadX5_MetaData 폼 이름으로부터 메타데이타를 얻을 수 있다.
var meta = dext.GetStringElements("DEXTUploadX5_MetaData");
// 메타데이타는 파일과 한 쌍을 이룬다.
var list = files.Zip(meta, (first, second) => new { File = first, Metadata = second });
foreach (var pair in list)
{
if (!pair.File.IsEmpty)
{
pair.File.Save();
sb.AppendFormat("F:{0}, M:{1}\n", pair.File.FileName, pair.Metadata.Value);
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(sb.ToString());
}
하나의 파일에 여러 메타 데이터가 있을 경우, 서버로 전달되는 메타 데이터는 key1=value1[SPLT]key2=value2[SPLT]key3=value3 포맷이 아니라,
key1[SPLT]value1[SPLT]key2[SPLT]value2[SPLT]key3[SPLT]value3 포맷으로 전달된다.
데이터를 얻으려면 "[SPLT]" 문자열로 토큰을 분리한 후, 홀수번 째는 키, 짝수번 째는 값으로 사용한다.
예제
파일을 추가한 후 업로드 버튼을 클릭하면 파일이 업로드된다.
메타 데이터는 로컬 파일에만 적용된다. (테스트하려면 로컬 파일을 추가)