上一篇 Github 透過 Octokit.net
操控 Github - 取得所有 Repositories 我們聊到了如何列出所有的 Repositories ,這一篇我們要來上傳檔案了。
主要都寫在註解裡面了,主要先取得 所有的檔案資訊,比對後如果存在的刪除原本的,之後在做上傳 這是 sample 的位置
https://github.com/donma/codenote/blob/master/blogimages/sampleuploadbysdk.jpg
編修紀錄在這裡
https://github.com/donma/codenote/commits/master/blogimages/sampleuploadbysdk.jpg
,就算你是用程式操控的,還是依然可以看到編修記錄
private async static void UploadFile()
{
//這 DONMATEST 可以任意都可以
var client = new GitHubClient(new ProductHeaderValue("DONMATEST"));
//從網站上取得的 personal access token https://github.com/settings/tokens
var tokenAuth = new Credentials(PersonalToken);
client.Credentials = tokenAuth;
//donma 是我的 github user name , codenote 是我的 repository name , blogimage 是該目錄下 , master 任意填寫
//sample 網址 : https://github.com/donma/codenote/tree/master/blogimages
var existingFiles = client.Repository.Content.GetAllContentsByRef("donma", "codenote", "blogimages", "master").Result;
//如果有找到已存在就刪除
foreach (var f in existingFiles)
{
if (f.Name == "sampleuploadbysdk.jpg")
{
await client.Repository.Content.DeleteFile(long.Parse(RepoId), "blogimages/sampleuploadbysdk.jpg", new DeleteFileRequest("delete file", f.Sha));
break;
}
}
//最後一個參數是否要轉成 base64
var updateRequest = new UpdateFileRequest("Hi , Upload by Donma Tool.", Convert.ToBase64String(File.ReadAllBytes(LocalFile)), "SHA", false);
var res = client.Repository.Content.UpdateFile(long.Parse(RepoId), "blogimages/sampleuploadbysdk.jpg", updateRequest).Result;
}
其實仔細想想,如果能夠把檔案傳到 github 上面,其實可以拿來搞很多事情 :P
筆記一下,給之後碰到的人..