繁体   English   中英

使用 GitLab 的 API 下载的 GitLab 存档存储库似乎已损坏

Downloaded GitLab archive repository, using GitLab's API, appears to be corrupted

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用 cURL 使用他们的 API 从 GitLab 下载存储库。 所有这些都是使用 PHP 完成的。 代码如下:

$zipResource = fopen('archive.zip', 'w');

$ch = curl_init("http://example.com/api/v3/projects");

curl_setopt($ch, CURLOPT_HTTPHEADER, array("PRIVATE-TOKEN: private_token_goes_here"));

curl_setopt($ch, CURLOPT_URL, "http://example.com/api/v3/projects/64/repository/archive");

curl_setopt($ch, CURLOPT_FILE, $zipResource);

curl_exec($ch);

curl_close($ch);

简要概述:创建一个空的 zip 文件。 连接到服务器,获取存档并将其写入 zip 文件。

存档出现在服务器上,我可以下载它,双击它可以解压缩它,所有文件都在那里,一切似乎都井井有条。

但是,当我尝试使用终端解压缩它时,会弹出以下错误:

Archive:  archive.ZIP
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.

到目前为止我尝试过的是:

将标题设置为"Content-type: application/zip" 将标头设置为"Content-Transfer-Encoding: Binary" (存档文件类型为'wb' //binary )或"Content-type: application/octet-stream"等。 最终结果总是相同的,这意味着我在尝试解压缩存档时会遇到上面提到的错误。

我只能假设我没有正确使用 cURL,没有正确设置标头,或者他们的 API 有问题(极不可能)。

任何朝正确方向的推动都非常感谢。

2 个回复

我在使用 Gitlab 时遇到了同样的问题。 在我的情况下下载为 tar 工作正常。 我还发现下载的 ZIP 文件实际上包含所有数据,但已损坏。 如果安装了 Java,ZIP 文件中的数据仍然可以恢复:

jar xvf corrupted-zip-file.zip

它可能是您正在下载的 GZipped TARball。 您应该将.zip扩展名放在您正在访问的 URL 的末尾。

1 来自GitLab的私有存储库归档文件(tar.gz),已通过GitLab的API使用PHP下载,似乎已损坏-校验和无效

我想使用其API下载私有的GitLab存储库档案。 我正在使用PHP和cURL来做到这一点。 我可以使用以下代码来做到这一点: 代码本身并不复杂,也不是很标准。 我面临的问题是,一旦我尝试使用以下代码解压缩文件: 我收到以下错误: 是的,这就是整个错误,我没有删 ...

2 Gitlab中的Composer下载存储库作为存档

TL; DR 我需要一种方法来使作曲家将我的程序包下载为存档,以便它排除我不想包含在.gitattributes上的文件和目录,将它们export-ignore为export-ignore 背景资料 我的composer软件包存储库中有一些文件,这些文件不希望包含在使用该软件包 ...

3 自托管 Gitlab 已损坏

我正在使用自托管 Gitlab 版本 13.9.1,它突然停止工作。 每当我们运行任何作业或管道时,它都会抛出 500 错误。 以下是我可以在production.log文件中看到的日志 - 从它的外观来看,我的数据库或其中的一些对象似乎已损坏。 我尝试了一些像下面文章中建议的重新索引之类的方法 ...

5 在 Gitlab 上创建可下载的存档

如果我在 Gitlab 上有一个项目并想提供可下载的存档,但该存档应仅包含本地build目录的内容(该目录位于.gitignore因此未提交),我该怎么做? 我已经阅读了git archive命令,但我不知道如何从那里开始。 ...

6 使用api v4下载Gitlab存储库档案

我正尝试使用Webhook从gitlab下载存储库存档,但它似乎无法正常工作。 我已经设置了个人令牌并将其传递给我,但它却给了我404。使用相同的代码(python 3.7),我可以下载公共存储库。 我正在使用的端点是https://gitlab.com/projects/myuser/my ...

7 使用 Gitlab 作为 yum 存储库?

我的客户正在从 Nexus(有一个 yum 存储库)迁移,他们想要使用 Gitlab。 我知道 Docker 可以通过其 maven 功能保存 docker 镜像和 JAR 文件。 但是 Gitlab 是否也允许您托管 yum 存储库? 谷歌搜索后我找不到任何东西。 ...

9 查找最近从GitLab下载的存储库[重复]

这个问题已经在这里有了答案: Bash函数查找最新的文件匹配模式 7个答案 我正在从私人存储库下载代码。 下载完成后,使用以下命令: 我最终得到一个档案: 我提取 它给了我以下文件夹: 但是我在同一路径中有一个较旧的下载文件夹,所以 ...

10 下载 GitLab 私有存储库

我想使用curl在 GitLab 中下载我的私人存储库。 我知道我可以使用 Gitlab API,但由于某种原因,它不起作用。 这可能吗? 当我尝试这样做时,它总是返回登录页面。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM