C# 借助 Octokit 上传 PDF 至 GitHub 后文件损坏无法使用问题求助
问题原因
你当前代码的核心错误是对File.ReadAllBytes()返回的字节数组直接调用ToString(),该方法默认返回的是字节数组的类型标识字符串System.Byte[],而非文件的实际内容。上传到仓库的文件存储的只有这个字符串,自然无法作为PDF正常打开。
修复方案
GitHub API 要求二进制文件通过Base64编码后传输,Octokit的CreateFileRequest提供了专门的参数支持二进制文件上传,修改后的代码如下:
// 读取PDF原始二进制内容 byte[] pdfFileBytes = File.ReadAllBytes(@"C:/Temp/CUSTOM.pdf"); // 将二进制内容转为Base64编码字符串 string base64PdfContent = Convert.ToBase64String(pdfFileBytes); // 执行上传,binary参数设置为true标识传入内容为Base64编码的二进制文件 await gitHubClient.Repository.Content.CreateFile( owner, repoName, filepath, new CreateFileRequest("你的提交说明", base64PdfContent, branch, binary: true) );
关键说明
- 不要直接对字节数组调用
ToString(),该方法不会对二进制内容做编码转换,仅返回类型名称 CreateFileRequest的binary参数设为true后,Octokit会自动通知GitHub API对传入的Base64字符串做解码,还原为原始二进制PDF文件存储
内容的提问来源于stack exchange,提问作者Janik313
相关产品推荐
相关产品推荐

