Получаем строку в base64, декодим ее, сохраняем как zip архив, разархвируем и возвращаем содержание файла - в нашем случае - это json #zip #base64 #json
<?
/**
* Функция возвращает json заархивированный zip-ом и переданый в base64 post-ом
* @param string $rests - строка в base64
* return string - json
*/
private function fGetBase64ZipJson($rests)
{
$file = $_SERVER["DOCUMENT_ROOT"].'/upload/1c_catalog/rests/rests.zip';
// Открываем файл для получения существующего содержимого
$rests = base64_decode($rests);
if($rests){
file_put_contents($file, $rests);
}else{
return new CSOAPFault( 'Server Error', 'Полученная строка не в base64' );
}
$zip = new ZipArchive;
if ($zip->open($file) === TRUE) {
$zip->extractTo($_SERVER["DOCUMENT_ROOT"].'/upload/1c_catalog/rests/');
$zip->close();
unlink($file);
} else {
return new CSOAPFault( 'Server Error', 'Не удалось распаковать архив' );
}
$file = $_SERVER["DOCUMENT_ROOT"].'/upload/1c_catalog/rests/rests.json';
$tmpStr = file_get_contents($file);
unlink($file);
return $tmpStr;
}
?>