주의사항
서버 보안 부부은 아래 링크를 참고하여 작업을 처리해주세요.
1. JSON Encoder 설치
다운로드 : JSON.phps
2. 이미지 업로드(동영상, 파일 삽입도 동일한 형태로 진행)
주의사항
가이드로 제공되는 아래 코드 중 파일 업로드 부분은 샘플 코드로서 보안 관련 처리가 미흡합니다.
파일 업로드 부분은 프로젝트 내부에서 사용하시는 부분을 그대로 사용하시고 아래 코드를 참고하셔서 연동 부분을 처리해주세요.
<?php
//업로드 디렉토리
$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);
// JSON Encoder를 include 한다.
include("./JSON.phps");
//클라이언트로 응답을 보냅니다.
header('Content-Type: application/json');
echo json_encode_new(array(
'uploadPath' => $fileUploadPath,
));
function json_encode_new($data) {
$json = new Services_JSON();
return($json->encode($data));
}
?>
3. HWP, MS Word, LibreOffice 문서 임포트
주의사항
가이드로 제공되는 아래 코드 중 파일 업로드 부분은 샘플 코드로서 보안 관련 처리가 미흡합니다.
파일 업로드 부분은 프로젝트 내부에서 사용하시는 부분을 그대로 사용하시고 아래 코드를 참고하셔서 연동 부분을 처리해주세요.
<?php
// upload path
$uploadDir = 'uploads/docs';
// form filed name
$fieldName = 'file';
// file name
$fileName = explode('.', $_FILES[$fieldName]['name']);
//file extension
$extension = end($fileName);
// temp file name
$tmpName = $_FILES[$fieldName]['tmp_name'];
// new file name to save
$newFileName = sha1(microtime());
// file upload path
$fileUploadPath = "${uploadDir}/${newFileName}.${extension}";
// save file to disk
move_uploaded_file($tmpName, $fileUploadPath);
// directory name to save conversion result
$wordDir = 'works';
// execute conversion
$importPath = "${wordDir}/${newFileName}";
executeConverter($fileUploadPath, $importPath);
// serialize document data
// v2.3.0 부터 파일명이 document.word.pb에서 document.pb로 변경됨
$pbFilePath = "${importPath}/document.pb";
$serializedData = readPBData($pbFilePath);
include("./JSON.phps");
// send response
header('Content-Type: application/json');
echo json_encode_new(array(
'serializedData' => $serializedData,
'importPath' => $importPath,
));
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 readPBData($pbFilePath)
{
$filesize = filesize($pbFilePath);
$zd = gzopen($pbFilePath, "r");
$data = substr( gzread($zd, $filesize), 16 );
gzclose($zd);
$byteArray = unpack('C*', gzuncompress($data));
$serializedData = array_values($byteArray);
return $serializedData;
}
function json_encode_new($data) {
$json = new Service_JSON();
return($json->encode($data));
}
?>