5 простых способов загрузить ZIP-файл на PHP с URL-адреса

Загрузка ZIP-файлов по URL-адресу — распространенная задача в веб-разработке, особенно при управлении файлами или извлечении данных. В этой статье мы рассмотрим пять простых способов добиться этого с помощью PHP. Независимо от того, новичок вы или опытный разработчик, эти методы помогут вам легко загружать ZIP-файлы. Итак, приступим!

Метод 1: использование file_get_contents() и file_put_contents()

$url = 'https://example.com/file.zip';
$zipData = file_get_contents($url);
file_put_contents('downloaded_file.zip', $zipData);

Этот метод использует функцию file_get_contents()для получения содержимого URL-адреса и функцию file_put_contents()для сохранения данных в локальный файл.

Метод 2: использование cURL

$url = 'https://example.com/file.zip';
$ch = curl_init($url);
$fp = fopen('downloaded_file.zip', 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

Здесь мы используем cURL, мощную библиотеку для выполнения HTTP-запросов. Мы установили параметр CURLOPT_FILE, чтобы указать дескриптор файла, в котором будут храниться загруженные данные. Параметр CURLOPT_FOLLOWLOCATIONиспользуется для отслеживания любых возможных перенаправлений.

Способ 3: использование команды wget

$url = 'https://example.com/file.zip';
$command = 'wget ' . $url . ' -O downloaded_file.zip';
exec($command);

Этот метод основан на утилите командной строки wget, которая обычно доступна в системах на базе Unix. Мы выполняем команду wget, используя exec(), и указываем выходной файл, используя флаг -O.

Метод 4: использование file_put_contents() сstream_context_create()

$url = 'https://example.com/file.zip';
$context = stream_context_create(['ssl' => ['verify_peer' => false]]);
$fileData = file_get_contents($url, false, $context);
file_put_contents('downloaded_file.zip', $fileData);

В ситуациях, когда на сервере возникают проблемы с проверкой сертификата SSL, мы можем создать собственный контекст потока, используя stream_context_create(). Мы передаем массив с ключом ssl, установленным для отключения одноранговой проверки.

Метод 5: использование HTTP-клиента Guzzle

use GuzzleHttp\Client;
$url = 'https://example.com/file.zip';
$client = new Client();
$response = $client->request('GET', $url);
$fileData = $response->getBody()->getContents();
file_put_contents('downloaded_file.zip', $fileData);

Если вы предпочитаете использовать библиотеку, Guzzle — популярный выбор. Мы создаем новый экземпляр HTTP-клиента Guzzle, делаем запрос GET к предоставленному URL-адресу и получаем тело ответа, используя getBody()->getContents().

Загрузка ZIP-файлов по URL-адресу с помощью PHP очень проста благодаря различным доступным методам. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям, будь то использование встроенных функций PHP, cURL, утилит командной строки или библиотек, таких как Guzzle. Теперь у вас есть знания, позволяющие легко загружать ZIP-файлы в ваших проектах PHP.