如何使用CURL上传Github资产文件

20
我想将桌面上名为“hello.txt”的文件上传到我的 Git 代码库中已发布的版本。我该如何操作?我阅读了 Git 文档,但它说的是:

POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name,我不知道如何在 CURL 中执行此操作。

请问如何将该文件作为发布资产发布到我的 Github 发布版中呢?谢谢。


http://superuser.com/q/149329/219423 这是您要找的吗? - 1615903
不确定它是否接受那个。我正在寻找完整的git命令,以便根据我的需求进行修改并理解它。 - tsaebeht
在问题中,您明确表示要使用cURL来完成这个任务。这不是这种情况吗? - 1615903
是的,但是这个<upload_url>是什么?如何上传桌面上的文件?如果您知道如何创建我想要的请求,能否写一个答案? - tsaebeht
2个回答

26

12
如果有人在尝试使用GitHub企业版后来到这里,你会发现上传文件的URL不是“uploads.github.com”。对于你所使用的特定GitHub企业版,上传文件的URL会在创建新版本时作为参数(upload_url)返回。 - akskap

7

在@galeksandrp的回答基础上,这里列出一些我遇到的问题。

请注意,--data-binary选项首先将文件内容复制到RAM中,因此,如果您有大型文件,例如接近2048MB,也就是github发布的绝对限制,并且RAM不足,则会失败,显示curl:option -d:out of memory

解决方法是使用-T 文件路径(不需要@符号)。

另外,如果要查看上传进度,您需要将输出导入到cat,如curl <...整个命令> | cat

因此,完整的命令如下:

curl -X POST \
    -H "Content-Length: <file size in bytes>" \
    -H "Content-Type: $(file -b --mime-type $FILE)" \ #from @galeksandrp's answer
    -T "path/to/large/file.ext" \
    -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/vnd.github.v3+json" \ 
    https://uploads.github.com/repos/<username>/<repo>/releases/<id>/assets?name=<name> | cat

注意: 另一种方法是使用gh release upload <tag> <files>... [flags]代替curl。(文档

gh是Github官方的命令行工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接