我正在使用 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(使用前将#替换为@)