<?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); } |
<?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; } |