我正在通过第三方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
答案 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
希望有帮助!