You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GitHub API上传图片后raw链接被屏蔽,如何获取国内可访问链接?

解决GitHub图片国内访问问题:生成user-images链接或替代方案

一、生成https://user-images.githubusercontent.com/****.jpeg格式的链接

这个链接是GitHub为Issue/PR评论附件提供的存储服务,不能通过仓库Contents API上传,得调用Issue评论上传接口,用multipart/form-data格式提交图片:

代码示例(Java)

// 先创建一个专门存图片的Issue(可设为私有),这里用编号1举例
String issueNumber = "1";
URL url = new URL("https://api.github.com/repos/{owner}/{repo}/issues/" + issueNumber + "/comments");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", "Bearer {access token}");
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");

connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());

// 构造multipart请求体
String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
outputStream.writeBytes("--" + boundary + "\r\n");
outputStream.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"{file-name}\"\r\n");
outputStream.writeBytes("Content-Type: image/jpeg\r\n\r\n");

// 写入你的图片字节流
byte[] imageBytes = ...;
outputStream.write(imageBytes);
outputStream.writeBytes("\r\n--" + boundary + "--\r\n");
outputStream.flush();
outputStream.close();

// 从响应中提取图片链接
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
    response.append(line);
}
reader.close();

// 用JSON工具解析响应,提取user-images链接
JSONObject jsonResponse = new JSONObject(response.toString());
String commentBody = jsonResponse.getString("body");
Pattern pattern = Pattern.compile("https://user-images\\.githubusercontent\\.com/[^)]+");
Matcher matcher = pattern.matcher(commentBody);
if (matcher.find()) {
    String usableImageUrl = matcher.group();
    // 这里拿到的就是目标格式的链接
}

说明:

  • 需提前创建一个专门存储图片的Issue(私有Issue可避免公开内容)
  • 上传后GitHub会自动把图片存到user-images服务器,链接会包含在评论内容里,从响应中提取即可

二、替代方案:用GitHub Pages访问图片

GitHub Pages的{owner}.github.io域名国内访问相对稳定,只需把图片上传到仓库的gh-pages分支:

修改现有代码实现

在原请求的JSON body中添加branch字段,指定上传到gh-pages分支:

String body = "{\n" +
      "  \"message\": \"" + "myFirstImage" + "\",\n" +
      "  \"content\": \"" + encodedImage + "\",\n" +
      "  \"branch\": \"gh-pages\"\n" +
      "}";

上传完成后,图片访问链接为:
https://{owner}.github.io/{repo}/{file-name}

三、注意事项

  • user-images.githubusercontent.com的链接依赖对应的Issue评论,删除评论会导致图片失效
  • GitHub Pages需先在仓库设置中启用,分支选择gh-pages
  • 两种方式都要求你的GitHub Access Token拥有repo权限

内容的提问来源于stack exchange,提问作者Daksh Rawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:53:10