通过PHP中的URL获取Zip文件

时间:2018-07-03 14:30:24

标签: php laravel-5

我正在通过第三方API调用获得响应。他们提供了一个file_url作为响应。如果我在浏览器URL中点击file_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
)

如何在服务器上的public / phoneList文件夹中下载zip文件并解压缩该文件?

$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 :(得分:0)

借助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";
}

您可以在以下位置找到更多信息:download a zip file from a url和此处:Unzip a file with php

希望有帮助!