Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载并解压缩带有PHP cURL的.tar.gz文件,并以字符串不';行不通_Php_Http_Curl_Gzip - Fatal编程技术网

下载并解压缩带有PHP cURL的.tar.gz文件,并以字符串不';行不通

下载并解压缩带有PHP cURL的.tar.gz文件,并以字符串不';行不通,php,http,curl,gzip,Php,Http,Curl,Gzip,我尝试通过PHP cURL下载一个.tar.gz文件,将其解压缩并将文件内容作为字符串返回给客户端 当我尝试通过终端时,它可以工作: curl "https://domain.com/filename.tar.gz?what=ever&fu=bar" | tar -xz 通过PHP cURL尝试不起作用(responseUrl来自客户端应用程序): 我对客户端Angular2应用程序的回报是: Response { _body: "", headers: Headers

我尝试通过PHP cURL下载一个.tar.gz文件,将其解压缩并将文件内容作为字符串返回给客户端

当我尝试通过终端时,它可以工作:

curl "https://domain.com/filename.tar.gz?what=ever&fu=bar" | tar -xz
通过PHP cURL尝试不起作用(responseUrl来自客户端应用程序):

我对客户端Angular2应用程序的回报是:

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

我的剧本怎么了?感谢您的帮助

我可以提供帮助-如何在PHP中下载和提取Zip归档文件

希望它对.tar.gz文件有效

PHP具有Zip存档扩展。你可以看到这张照片。ZipArchive扩展的使用非常简单

下载

对于下载,我们将使用cURL。首先,我们创建一个空白的zip文件,从服务器下载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将从变量$url中提到的url获取Zip存档文件。$zipFile变量包含我们要保存Zip存档文件的文件的本地路径

提取(解压缩)

对于前面提到的提取,我们将使用PHPZIP存档扩展。 我们将创建类变量,打开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变量中应该提到提取路径。如果存在任何文件,它将被覆盖或合并。

显示的URL完全不同。一个是
tar.gz
文件,另一个是
.php
响应,因此您当然会得到不同的结果…不,我从客户端应用程序调用php脚本,并解析文件的URL以$u POST['responseUrl']的形式下载。但这有点不清楚。我更正了我的帖子。
/* 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();