使用 GitHub API 下载文件时解码 base64

2023-11-20

我正在使用 GitHub API 从 GitHub 下载文件。我已经能够成功进行身份验证并从 github 获得响应,并看到表示文件内容的 Base64 编码字符串。

不幸的是,在解码 Base64 字符串时出现了异常错误(字符串长度不是 4 的倍数)。

HTTP请求如下图所示:

GET /repos/:owner/:repo/contents/:path

(部分)响应如下所示:

{
    "name":....,
    "download_url":...",
    "type":"file",
    "content":"ewogICAgInN3YWdnZXIiOiAiM...
}

我遇到的问题是字符串的长度是15263字节,并且在解码字符串时出现错误(字符串长度不是4的倍数)。我正在使用 node.js 和“base64-js”npm 模块来解码字符串。执行解码的代码如下所示:

var base64 = require('base64-js');
var contents = base64.toByteArray(fileContent);

解码导致异常:

Error: Invalid string. Length must be a multiple of 4
    at placeHoldersCount (.../node_modules/base64-js/index.js:23:11)
    at Object.toByteArray (...node_modules/base64-js/index.js:42:18)
    :
    :

我认为 GitHub API 正在向我发送正确的数据,所以我认为这不是问题。

我是否执行解码不当或者是否存在我忽略的其他问题?

任何帮助表示赞赏。


我进行了一些尝试,并通过使用不同的 Base64 解码库找到了解决方案,如下所示:

var base64 = require('js-base64').Base64;
var contents = base64.decode(res.content);

我不确定编码字符串长度是否必须能被 4 整除(显然我的 15263 字符长度字符串不能被 4 整除),但备用库正确解码了该字符串。

我也发现有效的第二个解决方案特定于如何使用 GitHub API。通过将以下内容添加到 GitHub API 调用标头,我还能够获取解码后的文件内容:

'accept': 'application/vnd.github.VERSION.raw'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 GitHub API 下载文件时解码 base64 的相关文章

  • Github API:过早获取超出速率限制的问题

    我正在构建一个应用程序来获取问题和拉取请求 https developer github com v3 超过 1K 的 github 存储库 就像这样 curl i https api github com repos user repo
  • 如何在java中将图像转换为base64字符串? [复制]

    这个问题在这里已经有答案了 它可能是重复的 但我在将图像转换为时遇到一些问题Base64发送给Http Post 我已经尝试过这段代码 但它给了我错误的编码字符串 public static void main String args Fi
  • GZipStream:为什么我们在压缩后转换为base 64?

    我只是在查看用于压缩字符串的代码示例 我发现使用 GZipStream 类就足够了 但我不明白为什么我们必须将其转换为 Base 64 字符串 如示例所示 using System IO Compression using System T
  • Laravel:如何模拟依赖注入类方法

    我正在使用GitHub API https github com KnpLabs php github api通过一个Laravel API 包装器 https github com GrahamCampbell Laravel GitHu
  • 无法使用docx将base64编码的图像添加到word文档中

    我需要使用 python docx 模块将图像添加到 word 文档中 将base64编码的数据转换为base64字节 然后转换为图像流 现在我尝试将图像流添加到word文档中 import io from docx import Docu
  • GitHub API - 语言列表

    GitHub API 中是否有一个端点可以为我提供 GitHub 上所有语言的列表 我正在寻找与 github com 网站上 趋势 部分中的语言下拉列表类似的结果 不是直接来自 GitHub API The OP敏捷王牌 https st
  • GitHub v3 API - 如何在存储库中创建初始提交?

    我正在使用 v3 API 并设法列出存储库 树 分支 访问文件内容并创建 blob 树 提交 我现在正在尝试创建一个新的存储库 并设法使用 POST user repos 来完成它 但是当我尝试在这个新存储库中创建 blob trees c
  • 生成 CloudFront 签名 URL 时性能缓慢

    我正在按照此示例使用 PHP 在 CloudFront 上创建签名 URLhttp docs aws amazon com AmazonCloudFront latest DeveloperGuide CreateURL PHP html
  • Nodejs 解码 base64 并使用流将它们保存到文件中

    在我的node js应用程序中 我使用以下代码行解码base64编码的图像 const fileDataDecoded Buffer from base64EncodedfileData base64 到目前为止 我可以使用以下代码编写一个
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将图像编码为base64有什么效果?

    如果我将图像 jpg 或 png 转换为 base64 那么它会更大 还是具有相同的大小 会大多少呢 是否建议在我的网站上使用 Base64 编码的图像 大约会大 37 非常粗略地说 Base64 编码的二进制数据的最终大小等于原始数据大小
  • 我可以通过 GH API 获取两次提交之间一个文件的差异数据吗?

    我知道如何通过 API 以及 SHA 和所有这些好东西来获取文件的提交 但是 假设我只想要 1 次提交中的文件差异或两次提交中同一文件的差异 例如 在这次提交 https github com rails rails commit ea75
  • Base 64 编码的有效字符范围

    我对以下内容感兴趣 是否有一个字符列表never作为 Base 64 编码字符串的一部分出现 例如 我不确定这种情况是否会发生 如果原始输入实际上有 作为它的一部分 编码会有所不同吗 这是我可以发现的 RFC 4648 http www r
  • 如何通过GitHub API V4搜索特定页面

    Github APIv4 GraphQL 有一些很好的功能 但我找不到使用它来搜索问题的方法分页 like https api github com search issues q repo user somerepo is open pa
  • 将二进制解码为pdf

    我正在使用一个平台 当您将 pdf 上传到该平台时 它会使用 Python 中的 base64 编码转换 pdf 然后它将二进制字符串存储在数据库中 现在我想解码字符串并将它们写入本地文件夹 所以我想使用 with open 结构并向其传递
  • 如何在浏览器的新选项卡上显示Base64图像?

    我有 Base64 编码图像作为响应 如何使用 js 在浏览器的新选项卡中显示该图像 任何人都可以提出解决方案 谢谢 success function base64Image 假设你要得到一张 GIF 图像 Display a base64
  • 播放完整性本地验证

    我正在尝试将播放完整性检查集成到我的应用程序中 以确保我的应用程序没有安装在已取得 root 权限的 Android 设备上 我可以按照谷歌的指导成功获得完整性令牌响应document https developer android com
  • 如何在Android中将位图转换为PNG,然后转换为base64?

    正如标题所暗示的 我试图让我的 Android 应用程序的用户从他的设备中选择一个图像 完成 然后我想缩小图像 完成 将图像压缩 转换为 png 并发送它作为 Base64 字符串发送给 API 所以我目前调整图像大小 如下所示 optio
  • 如何列出所有 GitHub 用户?

    我正在开发一个网站 需要从 GitHub 爬取所有用户信息 至少是我们网站上的用户 我搜索了 GitHub API 没有找到答案 那么我有什么办法可以完成这份工作吗 我只有用户的电子邮件 我可以通过将电子邮件哈希值与头像 URL 进行比较来

随机推荐

  • 替换 DataGridView 中的 DateTime.MinValue

    我正在开发一个姓名记录应用程序 该信息存储在 SQLite 数据库中 数据库中的所有列都是 TEXT 类型 出生日期列除外 它是 DATETIME 我转移到 SQLite 数据库的原始 Access 数据库允许出生日期为空 因此当我复制它时
  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope
  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认
  • 错误:Android Pre Dex:未指定 Android SDK

    我已经下载了gdx setup jar从网站上 我将其运行为 java jar gdx setup jar 我选择我想要的选项并为其生成项目idea libgdx 1 6 2 当我单击生成按钮时 该工具不会向我抛出任何错误 当我跑步时ide
  • Firestore获取根集合的所有文档和子集合

    假设我有这种结构 A collection a doc name Tim B collection b doc color blue where A and B are 收藏品 while a and b are 文件 有没有一种方法可以通
  • 如何在 Matplotlib 中以 3D 形式绘制热图颜色

    I am using Matplotlib 3D to plot 3 dimensions of my dataset like below 但现在我还想将第四维 即 0 到 20 之间的标量值 可视化为热图 所以基本上 我希望每个点都根据
  • App Engine Java 11 无法在实时服务器上找到或加载主类

    tl dr 为什么这在本地有效 但在部署到实时 App Engine 项目时却无效 我正在尝试使用 Java 11 版本的 App Engine 创建一个基于 servlet 的准系统 Web 应用程序 我正在将一些项目从 Java 8 更
  • 如何在 multiautocompletetextview 中使用空间标记器(如 gmail 到 android 中的字段)正确添加和删除联系人气泡

    i am struggling alot with adding the Bubbles to to field like in gmail or facebook messanger please look into this pictu
  • Android“您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用”

    好的 我收到此错误 标题 很多帖子建议我 甚至Android studio 更改主题 更改为App Appcompat 我已经做到了 清单文件
  • PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

    我从数据库中选择一些数据并将它们编码为 json 但我遇到了捷克符号的问题 例如 我的文件采用utf 8编码 我的数据库也是utf 8编码 我也将标头设置为utf 8编码 请问我还应该做什么 My code header Content T
  • VS2015企业版中出现错误C4576

    我有错误C4576在 Visual Studio 2015 中 当我尝试编译文件 transcoding c 时 该文件的源代码在这里 转码 c 错误 C4576 带括号的类型后跟初始值设定项列表是非标准显式类型转换语法 错误出现在该指令的
  • 列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制]

    这个问题在这里已经有答案了 当我跑步时git ls remote在工作树中 该命令输出原始存储库中的修订列表 由于某种原因 我对每个标签进行了 2 个修订 对于同一标签的第二个修订 标签名称包括 git ls remote From ema
  • 中断等待阻塞操作的线程?

    我正在运行一个线程 其主要操作是使用阻塞函数调用代理 并等待它给它一些东西 我已经使用了 挥发性布尔值 和 Interruption 的已知模式 但我不确定它是否会起作用 当我尝试添加 catch 块时InterruptedExceptio
  • 使用 GitHub API 下载文件时解码 base64

    我正在使用 GitHub API 从 GitHub 下载文件 我已经能够成功进行身份验证并从 github 获得响应 并看到表示文件内容的 Base64 编码字符串 不幸的是 在解码 Base64 字符串时出现了异常错误 字符串长度不是 4