如何通过Github API上传图片以在问题评论中使用

13
我目前正在使用Github API制作iOS Github客户端应用程序。 我想实现创建带有图像的问题的功能。 我的问题是如何通过API上传问题评论的图像。 我们能够通过在github.com中拖放上传图像,如下所示的图像:image_upload_in_browser
我想使用这个https://cloud.githubusercontent.com/assets/~~~.PNG。 有没有办法通过API或其他方式上传到https://cloud.githubusercontent.com
4个回答

6
截至2020年2月,还没有官方解决方案可以通过API上传文件以在GitHub问题中使用。
简单的解决方案是使用存储库分支(您可以将其命名为“assets”)。 您可以使用最后一个提交SHA的原始链接轻松地从GitHub问题中链接到它们:
https://github.com/ORG/REPO/raw/LAST_SHA/PATH

这种链接在问题正文中总是可以正确地呈现。

2

我使用的解决方案是将图片推送到存储库中,然后在问题中使用相对链接。

您可以为图像创建一个孤立分支,并将其推送到refs/heads之外的引用,这样这个引用不会在普通克隆中被克隆(您需要使用git clone --mirror)。

它看起来像这样(概念证明):

git checkout --orphan images
git rm -rf *
# copy your images to the repo
git add <your images>
git commit -m "add images"
git push origin HEAD:refs/images/image-ref
git log --format=%H
# note the hash

接下来,在问题中使用一个相对链接,使用上面的提交哈希:

![alt text](../blob/<HASH HERE>/path/to/your/image.png?raw=true)

令人烦恼的是,像 https://github.com/user/repo/blob/refs/images/image-ref 这样的 URL 在 GitHub 上似乎无法工作,但使用 git rev-parse HEAD 中的哈希值确实可以像你建议的那样工作。 - Eric

1

我也一直在尝试寻找方法来实现它,但是没有可用的方法。 我正在进行一些额外的测试,以便您可以在devtool-network面板中观察拖放操作。

我发现https://github.com/upload/assets/21842410使用PUT方法请求,并且其响应为{"id":21842410,"name":"-2.png","size":1261,"content_type":"image/png","href":"https://cloud.githubusercontent.com/assets/3518853/21842410/7c3f6812-d79b-11e6-8209-e49b44aaa883.png","original_name":null}

我的测试还没有完成,如果这能给您带来灵感并且您有时间实现任何演示,请告诉我您的结果。 :)


1
感谢您分享您的经验。我使用PUT方法请求相同的URL https://github.com/upload/assets/1234567,但是响应是432错误。我认为我找不到被认证的方法。我希望GitHub能够为我们实现这个功能。 - Justin Sato
1
好的,432错误是由于您在HTTP请求中没有提供足够的身份验证数据,使其工作需要花费大量时间,这不是官方解决方法。虽然不建议这样做,但如果官方从未发布解决方法,那么这是唯一的方法。 - yupengzhang

0

这是不可能的。你唯一的机会就是将你的图片上传到自己的S3存储桶或类似的地方,并在评论/问题中链接它。我认为GitHub会捕捉它们并缓存它们以提供更好的用户体验。


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