- 설명
-
DEXTUploadX5 컴포넌트를 생성되는 과정에서 발생하는 오류를 제외하고, 운영 시점에 발생하는 모든 오류는 onDX5Error 콜백 함수로 전달됩니다.
/** * 컴포넌트 내부 또는 내부를 경유하여 전달되는 모든 오류 및 경고 메시지가 onDX5Error 콜백 함수를 통해 알아낼 수 있습니다. * @param {string} id 오류 또는 경고가 발생한 컴포넌트의 아이디 * @param {string} code 오류 코드 * @param {string} msg 오류 메시지 */ function onDX5Error(id, code, msg) { alert(id + " => " + code + "\n" + msg); }
만약 onDX5Error 함수가 페이지 내에 없다면, 오류를 확인할 방법이 없습니다.
DEXTUploadX5는 onDX5Error 함수 외에 오류를 따로 기록하는 로깅 기능은 없습니다.
onDX5Error 함수는 개발 과정에서 발생하는 문법적, 논리적 스크립트 오류를 보여주는 역할은 담당하지 않습니다.
파일 업로드 후 서버에서 오류가 발생하면 업로드 실패로 판단합니다.
HTTP는 GET, POST 요청(파일 업로드도 마찬가지)을 했을 때 서버에서 문제없이 코드가 완료가 되었다면 HTTP 상태 코드값 200이 반환됩니다.
DEXTUploadX5는 서버로부터 200 코드값을 받으면, 파일 업로드가 완료되었음을 알게 되며, 이때 onDX5UploadCompleted 콜백 함수를 호출합니다.
이와 반면에 서버에서 400, 403, 404, 500과 같은 HTTP 상태코드를 받는 다면, 오류가 발생한 것으로 판단하고 추가 작업을 중지하며, onDX5Error 콜백 함수를 호출합니다.
그러므로 서버 측 코드에서는 오류가 발생했을 때, 이를 무시하거나, 다른 형식으로 포장해서는 안되며, Exception이 발생하는 경우 500 오류가 전달이 되도록 조치를 해야 합니다.
만일 try - catch 구문처럼 서버에서 오류를 캐치하고, 오류를 전달하지 않으면 서버는 200 값을 반환하게 되므로, DEXTUploadX5는 업로드가 성공적으로 완료된 것으로 판단하게 됩니다.
더불어 서버에서 오류가 발생했을 때, 에러 페이지를 예쁘게 꾸며 클라이언트로 전달하는 경우가 많은데, 이때 클라이언트로 전달되는 메시지는 오류 내용이지만, 상태 코드가 200이므로 DEXTUploadX5는 업로드가 성공적으로 완료된 것으로 판단하게 됩니다.
예제에서는 전송 버튼을 누를 때, 서버 측에서 404 오류가 발생하도록 구성되어 있습니다.
function onDX5Created(id) { var dx = dx5.get(id); // 업로드 경로는 실제로 존재하지 않습니다. // 그러므로 전송 버튼을 클릭하면 서버에서 404 오류가 발생합니다. dx.setUploadURL(dx5.canonicalize("../service/not-existed-service.do")); }
- 예제
-