2020年11月25日水曜日

Githubで1MB以上のファイルが読み取れない

 1MBしか読み取れないのは、GetRawContentの仕様のようです。

blobsを使うと100MBまで出来るようになるよ、というご丁寧なエラーメッセージが出てきます。

.net core - How to retrieve and update a file > 1MB from/to master GitHub using Octokit.Net Git Data API within c# - Stack Overflow


131Cで問題を修正しました。


private Dictionary SHA_MAP = new Dictionary();
        
        public async void read_hiearachy()
        {
            try
            {
                SHA_MAP.Clear();
                var github = new Octokit.GitHubClient(new Octokit.ProductHeaderValue("IshisakaSample"));
                
                string owner = richTextBox1.Text.Trim();
                string repo = richTextBox2.Text.Trim();


               
                treeView1.Nodes.Clear();
                TreeNode rootNode = new TreeNode(repo);
                treeView1.Nodes.Add(rootNode); // ルート・ノードの追加

                
                string branch_str = richTextBox3.Text.Trim();
                var branch = await github.Repository.Branch.Get(owner, repo, branch_str);// "master");
                var contents = await github.Git.Tree.GetRecursive(owner, repo, branch.Commit.Sha);
                foreach (var v in contents.Tree)
                {
                    if (v.Path.Contains(".nurse3"))
                    {
                        if (v.Size >= 1024 * 1024)
                        {
                            SHA_MAP[v.Path] = v.Sha;
                        }
						if (Thread.CurrentThread.CurrentUICulture.DisplayName.Contains("日本語")){
                            if (v.Path.Contains("Japanese"))
                            {
                                rootNode.Nodes.Add(v.Path);
                            }
                        }else if (v.Path.Contains("English")){
                        	rootNode.Nodes.Add(v.Path);

                        }
                    }
                    Debug.WriteLine(v.Path, v.Type);
                }
                rootNode.Expand();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            read_hiearachy();
        }

        
        private async void read(string filepath)
        {
            var github = new Octokit.GitHubClient(new Octokit.ProductHeaderValue("IshisakaSample"));
            string owner = richTextBox1.Text.Trim();
            string repo = richTextBox2.Text.Trim();
            if (SHA_MAP.ContainsKey(filepath))
            {
                string sha = SHA_MAP[filepath];
                var b64 = await github.Git.Blob.Get(owner, repo, sha);
                
                byte[] file=Convert.FromBase64String(b64.Content);
                
                form1.deserialize(file);

            }
            else
            {
                var file = await github.Repository.Content.GetRawContent(owner, repo, filepath);
                form1.deserialize(file);
            }

        }

0 件のコメント:

コメントを投稿