Получить Zip-файл по URL в PHP - PullRequest
0 голосов
/ 03 июля 2018

Я получаю ответ от стороннего вызова API. Они предоставили мне file_url в ответ. Если я нажал file_url в URL браузера, то получил zip-файл на локальной машине.

stdClass Object
(
    [start_date] => 2018-06-01 08:00:00
    [report_date] => 2018-07-02
    [account_name] => Maneesh
    [show_headers] => 1
    [file_url] => https:examplefilename
    [date_range] => 06/01/2018 - 07/03/2018
)

Как я могу скачать zip-файл в папке public / phoneList на сервере и разархивировать файл?

$fileUrl = $rvmDetails->file_url;
$zip = realpath('/phoneList/').'zipped.zip';
file_put_contents($zip, file_get_contents($fileUrl));
$zip = new \ZipArchive();
$res = $zip->open('zipped.zip');
if ($res === TRUE) {
    $zip->extractTo('/phoneList/'); // phoneList is folder
    $zip->close();
} else {
    echo "Error opening the file $fileUrl";
}

Приведенный выше код работает. но проблема возникает при распаковке папки.

ZipArchive::extractTo(): Permission denied

1 Ответ

0 голосов
/ 03 июля 2018

С помощью встроенной системы PHP вы можете открывать / извлекать zip-файлы по определенному пути и загружать их с помощью CURL (вы также должны создать имя файла), например:

$fileUrl = $obj->file_url;
$fileName = date().".zip"; //create a random name or certain kind of name here

$fh = fopen($filename, 'w');
$ch = curl_init()
curl_setopt($ch, CURLOPT_URL, $fileUrl); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // this will follow redirects
curl_exec($ch);
curl_close($ch);
fclose($fh);

// get the absolute path to $file
$path = pathinfo(realpath($filename), PATHINFO_DIRNAME);

$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
  $zip->extractTo($path);
  $zip->close();      
} else {
  echo "Error opening the file $file";
}

Вы можете найти более подробную информацию здесь: скачать ZIP-файл с URL и здесь: Разархивировать файл с php

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...