我用“/gist”创建的网址在问题中似乎已损坏

问题描述 投票:0回答:1

在我的界面项目中,我想截取当前屏幕的屏幕截图,并在 GitHub 上的项目相关存储库中创建一个问题,并填写标题和描述。我尝试编写一个服务来执行此操作。根据我的研究,我发现我需要使用“/gists”向问题添加图像。

我使用 Gist 创建一个 URL。但是,在该问题中,该 URL 似乎已损坏。当我访问URL时,我遇到了base64。 Base64 给我图像本身。如何在问题中显示使用 /gist 创建的图像而不显得损坏?

这是我的代码。

app.post('/create-issue',upload.single('file'), async (req, res) => {
  const file = req.file;
  const {title,issue} = req.body; 

  if (!file) return res.status(400).send('No file uploaded.');

  try {
    const filePath = path.join(__dirname, 'uploads', file.filename);
    const fileContent = fs.readFileSync(filePath);

    const response = await githubApi.post('/gists', {
      description: 'Issue image upload',
      public: true,
      files: {
        [file.originalname]: {
          content: 'data:image/png;base64,'+fileContent.toString('base64'),
        },
      },
    });
    
    // const gistUrl = response.data.html_url;
    const imageFile = response.data.files[file.originalname];
    const imageUrl = imageFile.raw_url;
    fs.unlinkSync(filePath);
    const issueBody = `${issue}\n\n![Error Image](${imageUrl})`;

    try {
      const _resp = await githubApi.post(`/repos/${GITHUB_ORG}/${GITHUB_REPO}/issues`, {
        title: title,
        body: issueBody,
      });

      res.json(_resp.data);
    } catch (error) {
      console.error('Error creating issue:', error.response.data);
      res.status(500).send('Failed to create issue.');
    }

  } catch (error) {
    console.error('Error uploading image:', error.response.data);
    res.status(500).send('Failed to upload image.');
  }
});

目前,当我尝试创建问题时,它看起来像这样

我考虑过创建一个新的存储库并将图像上传到那里,但我不想要一个仅包含图像的存储库。当我尝试这个时,我遇到了以下错误:

Error uploading image: {
  message: 'Could not create file: Changes must be made through a pull request.',
  documentation_url: 'https://docs.github.com/articles/about-protected-branches',
  status: '409'
}

我希望使用 Gist 创建的链接在问题中显示为图像。

node.js express github github-api
1个回答
0
投票

创建图像要点后,您需要检索原始图像 url。此 url 返回正确的内容类型,可以在创建问题时使用。

要查找原始图像 url,您可以调用此 API:

/gists/:gist-id

其中 gist-id 是创建 gist 时返回的

id

上述 API 调用的响应将包含您的文件的

raw_url

"files": {
  "image.jpg": {
    "raw_url": "https://gist.githubusercontent.com/.../image.jpg"
}

注意:确保在创建图像要点时,图像文件扩展名是标准扩展名之一,以便可以派生内容类型。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.