.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" });
}

完整案例:https://github.com/Run2948/ImageBedDemo

最新文章

  1. Silverlight 后台设置 button 纯色背景
  2. [Leetcode] Bulls and Cows
  3. Determining Current Block and Current Item in Oracle Forms
  4. sonar-gerrit-plugin-2.2.0 安装
  5. 并行执行的Service,以媒体转码成新格式为例
  6. 把分类的select写在moden里做成一个组件 高洛峰
  7. C++运算符重载的方法
  8. linq使用字符串参数排序
  9. React 精要面试题讲解(五) 高阶组件真解
  10. Node.js(day3)
  11. python selenium ——— 动态id、class定位
  12. Developing Vert.x Modules with Gradle
  13. Maya插件开发的几种方式归纳
  14. python 全栈开发,Day90(Vue组件,前端开发工具包)
  15. ng-table
  16. Abp.Linq.Extensions扩展(1)--static class QueryableExtensions
  17. UE4 Sockets多线程TCP通信
  18. OK335xS U-boot 编译问题&amp;无Linux shell 问题
  19. php parse_str() 函数
  20. Android 多媒体MediaPlayer使用详解

热门文章

  1. .Net DateTime跨时区相关问题
  2. HTML 滚动条实现
  3. LCID
  4. Linux SD卡建立两个分区
  5. 任何一件事,如果你不投入时间和精力去驯养,就不可能产生真正的兴趣和热爱(Focus Feedback FixIt的原理) good
  6. 一、OpenScenGraph环境搭建
  7. git(一)
  8. Storm 学习之路(七)—— Storm集成 Redis 详解
  9. git操作相关
  10. java获取系统类型与版本