【问题标题】:How to download GitHub repository as zip archive using PHP api?如何使用 PHP api 将 GitHub 存储库下载为 zip 存档?
【发布时间】:2013-08-03 08:15:15
【问题描述】:

我正在尝试使用 php api 以 zip 格式下载 Github 存储库。谁能帮我解决这个问题?

【问题讨论】:

    标签: php file download repository


    【解决方案1】:

    你可以试试

    file_put_contents("master.zip", 
        file_get_contents("https://github.com/{group}/{project}/archive/master.zip")
    );
    

    但要确保allow_url_fopen设置在php.ini中,那么你就可以轻松使用file_get_contents()

    【讨论】:

    • 我们可以使用此代码下载私有存储库吗?另外,如何下载标签版本而不是master?
    【解决方案2】:

    你可以把这两个拼图组合起来:

    php下载文件:https://stackoverflow.com/a/3938551/2536029

    github zip:https://github.com/$USER/$REPO/archive/$BRANCH.zip 例如https://github.com/bpowers/psm/archive/master.zip

    【讨论】:

    • 我有私有仓库。不认证怎么下载?
    • 我还没有玩过它,但是由于 repo 是私有的,所以对我来说你需要以某种方式进行身份验证是有道理的。对吗?
    【解决方案3】:

    首先,使用以下格式构建一个 URL: https://api.github.com/repos/:owner/:repo/:archive_format/:ref

    然后,使用 curl 访问该 URL,但不要忘记:

    • 活动关注位置 (CURLOPT_FOLLOWLOCATION),设置为 true。
    • 分配用户代理 (CURLOPT_USERAGENT),例如“Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0”。
    • 如果存储库是私有的,请使用您的用户名和密码(或令牌)进行身份验证,将 CURLOPT_USERPWD 设置为 $youruser.':'.$yourpassortoken。
    • 您可以使用 CURLOPT_FILE 直接下载到文件,只需将该选项设置为使用 fopen($filename, 'w') 创建的先前打开的文件指针。

    抱歉,没有示例代码,但说明足够清晰。它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 2018-01-30
      • 2018-07-04
      • 1970-01-01
      • 2018-05-31
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多