.NET CORE上傳文件到碼雲倉庫【搭建自己的圖床】
先建一個公共倉庫(隨意提交一個README文件或者.gitignore文件保證master分支的存在),然后到gitee的個人設置頁面找到【私人令牌】菜單創建一個access_token。Gitee官方還友好的提供了基於swagger的API文檔和調試頁面: https://gitee.com/api/v5/swagger#/postV5ReposOwnerRepoContentsPath
搭建步驟
1.新建一個名為imagebed
的倉庫
- 按照碼雲正常建庫步驟即可
2.為imagebed
倉庫創建master
主分支
- [推薦]可以從本地向倉庫隨意提交一個README文件或.gitignore文件
- 或者你用自己的方式也行,只要保證倉庫具有一個
master
分支即可
3.到個人設置頁面找到【私人令牌】生成新令牌
4.使用Gitee官網API文檔簡單測試文件上傳
使用方法
基於.NET CORE MVC項目實現
/// <summary>
/// 碼雲倉儲文件上傳API
/// </summary>
/// <param name="stream"></param>
/// <param name="file"></param>
/// <returns></returns>
public async Task<(string url, bool success)> UploadGitee(Stream stream, string file)
{
string base64String = Convert.ToBase64String(stream.StreamToByte());
string path = $"{DateTime.Now:yyyyMMdd}/{Path.GetFileName(file)}";
using (var resp = await _httpClient.PostAsJsonAsync(AppConfig.GiteeConfig.ApiUrl + HttpUtility.UrlEncode(path), new
{
access_token = AppConfig.GiteeConfig.AccessToken,
content = base64String,
message = "上傳一個文件"
}))
{
if (resp.IsSuccessStatusCode || (await resp.Content.ReadAsStringAsync()).Contains("already exists"))
{
return (AppConfig.GiteeConfig.RawUrl + path, true);
}
}
return await Task.Run(() => (null, false));
}
/// <summary>
/// MVC上傳文件
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost("upload"), ApiExplorerSettings(IgnoreApi = false)]
public async Task<ActionResult> UploadFile(IFormFile file)
{
var (url, success) = await _imagebedClient.UploadImage(file.OpenReadStream(), file.FileName);
return await success ? Json(new { code = 1, msg = "success", data = url }) : Json(new { code = 0, msg = "failure" });
}