码迷,mamicode.com
首页 > Web开发 > 详细

.NET CORE上传文件到码云仓库【搭建自己的图床】

时间:2019-06-08 10:26:25      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:方法   https   turn   return   查看内容   提交   src   util   简单   

.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

.NET CORE上传文件到码云仓库【搭建自己的图床】

标签:方法   https   turn   return   查看内容   提交   src   util   简单   

原文地址:https://www.cnblogs.com/Run2948/p/10990044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!