使用Github API上传文件时,将需要上传的文件放入 contents
里时,接口会报错,提示 content is not valid Base64
。
根据提示,需要将要上传的文件转换为 Base64 格式:
export const getBase64 = (file) =>
new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = (error) => reject(error);
});
而当再次尝试之后,发现还是提示 content is not valid Base64
,经过多次尝试之后发现,需要将 Base64 格式的前缀去掉,例如:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCA
其中,需要将 data:image/png;base64,
去掉才行。
使用正则去掉:.replace(/^data:image\/\w+;base64,/, "")
最终上传成功:
const content = await getBase64(file);
await octokit.request(`put /repos/${toast.username}/${toast.repo}/contents/${filename}`, {
message: `upload:${filename}`,
content: content.replace(/^data:image\/\w+;base64,/, ""),
branch: "master",
headers: {
'X-GitHub-Api-Version': '2022-11-28'
}
}).then(onSuccess).catch(onError)