Использование CURL с классом PclZip - PullRequest
0 голосов
/ 15 сентября 2010

Я использую CURL, чтобы получить содержимое zip-файла на удаленном сервере, а затем сохранить его в файле temp_zip_file.zip, а затем использовать класс PclZip для извлечения содержимого файла.

Проблема заключается в том, чточто на некоторых серверах сервер не позволяет моему сценарию создавать временный zip-файл из возврата CURL, поэтому я могу использовать его для извлечения pclzip.

Что я хотел бы сделать, это пропустить создание временного zip-файла и просто использовать возвращаемую строку исходного CURL с классом pclzip для извлечения.

Я должен использовать pclzip, потому что некоторые серверы не позволяют использовать класс php zip по умолчанию.

Ниже приведена функция скручивания, используемая для извлечения содержимого из удаленного файла.

function copy_file($download_file)
{
    //get file
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$download_file);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $file = curl_exec($ch);
    curl_close($ch);
    $fp = fopen('temp_zip_file.zip', 'w');
    fwrite($fp, $file);
    fclose($fp);
   //exit;
}

Ниже приведена копия моей функции разархивирования pcl, в которой $ download_file равен 'temp_zip_file.zip':

function zip_extract($download_file, $store_path, $remove_path)
{
 //echo 1; exit;
 //echo $remove_path; exit;
 $archive = new PclZip($download_file);
 $list = $archive->extract(PCLZIP_OPT_REMOVE_PATH, $remove_path, PCLZIP_OPT_PATH, $store_path, PCLZIP_OPT_REPLACE_NEWER );
 if ($list == 0) 
 {
  //echo "death here"; exit;
  die("Error : ".$archive->errorInfo(true));

 }
 else
 {
  //print_r($list); exit;
  return 1;

 }

}

Спасибо за любую поддержку

1 Ответ

0 голосов
/ 15 сентября 2010

Если вы хотите использовать gzopen() для чего-то другого, кроме файла, вам может понадобиться Обертка данных *1003*.Имейте в виду, что это только для чтения, запись невозможна.При этом мне еще не приходилось сталкиваться с системой, которая не позволяет мне писать в директории TMP (переменная окружения TMP в Linux, переменная окружения TMPDIR в Windows, я считаю ...)

...