Как преобразовать необработанные данные в zip-файл в php с помощью CURL?

#php #curl #zip #php-curl

#php #curl #zip #php-curl

Вопрос:

Я использую php Curl для получения zip-файла, но получаю необработанные данные, такие как

введите описание изображения здесь

Как преобразовать эти данные в zip-файл, я пробовал это

 $url = "https://wordpress.org/latest.zip"; // URL of what you wan to download
$zipFile = "wordpress.zip"; // Rename .zip file
$extractDir = "extracted"; // Name of the directory where files are extracted
$zipResource = fopen($zipFile, "w");

// Get The Zip File From Server
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FILE, $zipResource);

$page = curl_exec($ch);

if(!$page) {
    echo "Error :- ".curl_error($ch);
}

curl_close($ch);

/* Open the Zip file */
$zip = new ZipArchive;
$extractPath = $extractDir;

if($zip->open($zipFile) != "true"){
    echo "Error :- Unable to open the Zip File";
} 

/* Extract Zip File */
$zip->extractTo($extractPath);
$zip->close();

die('Your file was downloaded and extracted, go check.');
  

Как преобразовать эти необработанные данные в zip-файл.

Я получил эту ошибку ** ZipArchive::extractTo(): недопустимый или неинициализированный Zip-объект**

Комментарии:

1. Вам не нужно ничего конвертировать, это и есть zip-файл. Проверьте возвращаемое значение вашего вызова fopen() — возможно, сбой.

2. Просто получите exec ($page) и запишите в двоичный файл.

3. Вы должны указывать ошибки в своих вопросах. У вас есть варианты подготовки curl к формату возвращаемых результатов.

4. Обновлена моя ошибка, о которой идет речь, пожалуйста, проверьте.

5. Ваш ZipArchive класс может быть подозрительным. Возможно, сервер даже не вернул весь файл. Нужны дополнительные сведения об отладке этого. Например, zip-файл уже мог быть поврежден.

Ответ №1:

У него есть некоторые проблемы с разрешениями, если я помещу этот файл в папку и сделаю его разрешение 777, он отлично работает и загружает данные.