1. 이미지, 동영상, 파일 업로드

<?php
try {
    //업로드 디렉토리
    $uploadDir = 'uploads/images';

    //폼 데이터 이름
    $fieldName = 'file';

    //파일 이름
    $fileName = explode('.', $_FILES[$fieldName]['name']);

    //파일 확장자
    $extension = end($fileName);

    //임시 파일 이름
    $tmpName = $_FILES[$fieldName]['tmp_name'];

    //저장될 새로운 파일이름
    $newFileName = sha1(microtime());

    //실제 파일 업로드 경로
    $fileUploadPath = "${uploadDir}/${newFileName}.${extension}";

    //파일을 저장합니다
    move_uploaded_file($tmpName, $fileUploadPath);

    //클라이언트로 응답을 보냅니다.
    header('Content-Type: application/json');
    echo json_encode(array(
        'uploadPath' => $fileUploadPath,
    ));

} catch (Exception $e) {
    echo $e->getMessage();
    http_response_code(404);
}




2. HWP, MS Word, LibreOffice 문서 임포트

<?php
try {
    //업로드 디렉토리
    $uploadDir = 'uploads/docs';

    //폼 데이터 이름
    $fieldName = 'file';

    //파일 이름
    $fileName = explode('.', $_FILES[$fieldName]['name']);

    //파일 확장자
    $extension = end($fileName);

    //임시 파일 이름
    $tmpName = $_FILES[$fieldName]['tmp_name'];

    //저장될 새로운 파일이름
    $newFileName = sha1(microtime());

    //실제 파일 업로드 경로
    $fileUploadPath = "${uploadDir}/${newFileName}.${extension}";

    //파일을 저장합니다
    move_uploaded_file($tmpName, $fileUploadPath);

    //문서 변환을 결과를 저장하는 디렉토리
    $wordDir = 'works';

    //문서 변환
    $zipFilePath = "${wordDir}/${newFileName}.zip";
    executeConverter($fileUploadPath, $zipFilePath);

    //압축 풀기
    $unzipFilePath = "${wordDir}/${newFileName}";
    unzip($zipFilePath, $unzipFilePath);

    //데이터 직렬화
    $pbFilePath = "${unzipFilePath}/document.word.pb";
    $serializedData = readPBData($pbFilePath);

    // 클라이언트로 응답을 보냅니다.
    header('Content-Type: application/json');
    echo json_encode(array(
        'serializedData' => $serializedData,
        'importPath' => $unzipFilePath,
    ));

} catch (Exception $e) {
    echo $e->getMessage();
    http_response_code(404);
}

function executeConverter($inputFilePath, $outputFilePath)
{
    $sedocConverterPath = 'c:/sedocConverter/sedocConverter.exe';
    $fontsDir = 'c:/sedocConverter/fonts';
    $tempDir = 'c:/sedocConverter/tmp';

    $cmd = "${sedocConverterPath} -f ${fontsDir} ${inputFilePath} ${outputFilePath} ${tempDir}";
    exec($cmd);
}

function unzip($zipFilePath, $unzipFilePath)
{
    $zip = new ZipArchive;

    if ($zip->open($zipFilePath) === true) {
        $zip->extractTo($unzipFilePath);
        $zip->close();
    }
}

function readPBData($pbFilePath)
{
    $fb = fopen($pbFilePath, 'r');
    $data = stream_get_contents($fb, -1, 16);
    fclose($fb);

    $byteArray = unpack('C*', zlib_decode($data));
    $serializedData = array_values($byteArray);

    return $serializedData;
}