gpt4 book ai didi

php - 使用 PHP cURL 下载并提取 .tar.gz 文件并返回给客户端,因为字符串不起作用

转载 作者:可可西里 更新时间:2023-11-01 17:31:45 24 4
gpt4 key购买 nike

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

当我通过终端尝试时,它起作用了:

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
}

我的脚本有什么问题?任何帮助表示赞赏!

最佳答案

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

希望它适用于 .tar.gz 文件。

PHP 有 Zip 存档扩展。你可以看到 php manual for installing ZipArchive Extension . 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 存档文件的文件的本地路径。

提取(解压)

对于我们之前提到的解压,我们将使用 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 变量中提及。如果存在任何文件,它将被覆盖或合并。

关于php - 使用 PHP cURL 下载并提取 .tar.gz 文件并返回给客户端,因为字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com