2016-10-07 2 views
1

Я пытаюсь загрузить файл .tar.gz через PHP cURL, извлечь его и вернуть содержимое файла в виде строки клиенту ,Загрузите и извлеките файл .tar.gz с PHP cURL и возвращайтесь к клиенту, так как строка не работает

Когда я пытаюсь через терминал работает:

curl "https://domain.com/filename.tar.gz?what=ever&fu=bar" | tar -xz 

Попытка с помощью PHP CURL не работает (где responseUrl приходит из клиентского приложения):

$_curl = curl_init(); 
curl_setopt_array($_curl, array(
    CURLOPT_URL => $_POST['responseUrl'], 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => 'gzip' 
)); 
$_responseFile = curl_exec($_curl); 
curl_close($_curl); 

echo file_get_contents($_responseFile); 

возвращения я к клиент Angular2 - это:

Response { 
    _body: "", 
    headers: Headers, 
    ok: true, 
    status: 200, 
    statusText: "Ok", 
    type: 2, 
    url: "http://test.local/api/getResponse.php", 
    __proto__: Object 
} 

Что случилось с моим скриптом? Любая помощь ценится!

+0

URL-адреса, которые вы показываете, совершенно разные. Один из них является файлом tar.gz, другой - ответом '.php', поэтому, конечно, вы получите отличные результаты ... –

+0

Нет, я вызываю скрипт PHP из клиентского приложения и анализирую URL-адрес файла для загрузки как $ _POST ['responseUrl']. Но это было немного непонятно. Я исправил свой пост. – Sommereder

ответ

0

Я могу помочь - Как скачать & распакуйте архив в PHP

Надеется, что это будет работать для файла .tar.gz.

PHP имеет расширение ZIP-архива. Вы можете увидеть php manual for installing ZipArchive Extension. Использование расширения ZipArchive очень просто.

Скачать

Для скачивания, мы будем использовать завиток. Сначала мы создаем пустой zip-файл, загружаем zip-файл с сервера и помещаем его в пустой почтовый файл, который мы создали.

$url = "http://example.com/pathtozipfile.zip"; 
$zipFile = "folder/zipfile.zip"; // Local Zip File Path 
$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); 

cURL получит архив архива Zip из url, указанного в переменной $ url. Переменная $ zipFile содержит локальный путь к файлу, мы собираемся сохранить файл архива Zip.

Extract (Распаковать)

Для извлечения, как мы уже упоминали ранее, мы будем использовать PHP Zip Archive Extension. Мы заставим переменную класса, откройте файл архива Zip и распаковать его:

/* Open the Zip file */ 
$zip = new ZipArchive; 
$extractPath = "path_to_extract"; 
if($zip->open($zipFile) != "true"){ 
echo "Error :- Unable to open the Zip File"; 
} 
/* Extract Zip File */ 
$zip->extractTo($extractPath); 
$zip->close(); 

Экстракт путь должен быть указан в переменной $ extractPath. Если какой-либо из файлов существует, он будет перезаписан или объединен.