Я использую 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;
}
}
Спасибо за любую поддержку