从私人仓库获取下载链接

问题描述 投票:0回答:1

在 PHP 中,我尝试使用 Github API 从我的私人存储库获取下载链接。

我参考了这个文档:https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#download-a-repository-archive-zip

我计划在 PHP 中使用 cURL,但我不知道如何检索/生成临时下载链接。我尝试直接回显$response,似乎代码都是未知字符。

下面是我的代码:

$token = 'abcdef';
$url   = 'https://api.github.com/repos/meiuser/ai/zipball';
$ch    = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Accept: application/vnd.github+json',
    'Authorization: Bearer ' . $token,
    'X-GitHub-Api-Version: 2022-11-28',
    'User-Agent: ai'
]);

$response = curl_exec($ch);

curl_close($ch);
php github github-api php-curl http-redirect
1个回答
0
投票

由于您已将 cURL 设置为遵循 Location 标头,因此它将默默地转到 API 提供的 URL(根据该文档),然后下载结果 - 您看到的这些字符是 zip 文件的二进制内容下载链接指向哪个。

如果您想要下载链接,请告诉curl 不要遵循重定向。然后从初始请求返回的 Location 标头中获取链接。

这些步骤应该对您有帮助:

删除这一行,它告诉 cURL 遵循重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

并在

curl_exec
命令之后添加以下内容:

$info = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
echo $info;
© www.soinside.com 2019 - 2024. All rights reserved.