Caribasius
4/12/2017 - 7:20 AM

Получаем строку в base64, декодим ее, сохраняем как zip архив, разархвируем и возвращаем содержание файла - в нашем случае - это json #zip #

Получаем строку в 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;
}
?>