curl从gitlab下载html而不是实际的zip文件

时间:2019-06-20 09:51:36

标签: linux curl gitlab

每次尝试从GitLab下载我的工件时,我都会看到将html格式保存在文件中,而不是xip文件本身。

我在这里发现了很多类似的东西,但是没有一个解决方案起作用。

我已经尝试过-l,-O -o使用--ouptput filename.zip更改了oupt文件,并且总是下载html文件。

链接...

https://gitlab.com/dafabe/example/-/jobs/artifacts/master/download?job=build

我如何更改命令以下载实际文件?

完整命令:

curl  https://gitlab.com/dafabe/example/-/jobs/artifacts/master/download?job=build --output filename.zip

尝试使用toke设置

curl 'https://gitlab.com/dafabe/example/-/jobs/artifacts/master/raw/build/hello?job=build&private_token=<private token here>'

我收到此回复...

<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>

最近的尝试和结果...

  

ubuntu-trusty-64:〜/ stuff $ curl -L -H“ PRIVATE-TOKEN:> xxxxx”   https://gitlab.com/dafabe/example/-/jobs/artifacts/master/download?job=build   --output filename.zip%总计%接收的%Xferd平均速度时间时间时间当前                                    Dload上传总剩余左速度100 98 100 98 0 0 189 0-:-:--:-:-   -:-:-189 0 0 0 19509 0 0 23717 0-:-:--:-:--:-:-168k vagrant @ vagrant-ubuntu-trusty- 64:〜/ stuff $ ls filename.zip vagrant @ vagrant-ubuntu-trusty-64:〜/ stuff $ file -b   filename.zip HTML文档,UTF-8 Unicode文本,带有很长的行   vagrant @ vagrant-ubuntu-trusty-64:〜/ stuff $

1 个答案:

答案 0 :(得分:2)

这可能是身份验证问题,就像评论中提到的人一样(在这种情况下,您可以例如在标头请求中传递您的个人令牌)。

如果您的项目是公开的,则无需身份验证即可下载档案。但是,如果您被重定向,您仍然可能会收到HTML响应。在这种情况下,您可以传递选项-L, --location进行卷曲:

curl -L https://gitlab.com/dafabe/example/-/jobs/artifacts/master/download?job=build --output filename.zip

您可以通过检查已下载的HTML页面的内容来确定您是哪种情况。

要使用个人令牌登录(请参见here,以获取有关创建令牌的帮助,请选择api作为范围),输入:

curl -L -H "PRIVATE-TOKEN: XXXXXXXX" https://gitlab.com/dafabe/example/-/jobs/artifacts/master/download?job=build --output filename.zip

XXXXXXXX应该替换为您生成的令牌。