대용량 파일 업로드

Home > 대용량 파일 업로드 > 예제 01

설명

대용량 파일 업로드는 개별 파일이 2GB가 넘더라도 전송할 수 있는 기능이다.

이와 달리, 업로드할 총 파일의 크기(기타 데이터 포함)가 2GB가 넘지 않는다면 굳이 대용량 파일 업로드를 사용할 필요 없다.

일반 업로드의 경우 10개의 파일 있을 때, ORAF는 한 번의 전송으로 10개의 파일을 모두 전송하며, OROF 모드로 업로드를 하면, 개별 전송이기 때문에 10회 전송한다.

이와 달리 대용량 파일 업로드는 OROF처럼 개별 파일마다 전송을 할 뿐만 아니라 개별 파일을 정해진 크기로 나눈 청크(블록) 단위로 서버에 전송하기 때문에, 최소 20회 이상의 전송 작업이 필요하다.

// 파일 업로드를 처리할 경로를 설정한다.
dx.setUploadURL("http://../service/extension-upload.ashx?use=dext");

// 대용량 파일 업로드 방식을 사용하려면 EXTS로 설정한다.
dx.setUploadMode("EXTS");

// 파일을 쪼갤 블록 크기를 byte 단위로 설정한다.
dx.setUploadBlockSize(10 * 1024 * 1024);

DEXTUploadX5는 파일을 보내는 sender 역할을 수행한다. 이와 달리 DEXTUpload.NET Pro는 서버 측에 파일을 받는 receiver 역할을 담당한다.

쪼개진 파일을 하나로 합쳐 서버에 임시 파일을 생성하는 것은 DEXTUpload.NET Pro가 모두 알아서 처리한다.

그러므로 개발자는 OROF 업로드 방식을 사용한 것처럼 서버 로직을 구현하면 된다.

서버 측 처리 코드는 다음과 같다.

using (var dext = new DEXTUpload.NET.FileUpload())
{
    var element = dext.GetSingleFileElement();

    if (!element.IsEmpty)
    {
        element.Save();
        ...
    }
    ...
}

DEXTUploadX5는 비어 있는 파일 폼을 전송하지 않는다. (0바이트 파일이 아니다.) 그러므로 element.IsEmpty는 항상 false이어야 한다. 만약 그렇지 않다면, 정상적인 경로를 통하여 서버 측 코드가 호출된 것이 아닐 수 있다.

예제