zoukankan      html  css  js  c++  java
  • .NET CORE上传文件到码云仓库【搭建自己的图床】

    .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

  • 相关阅读:
    Spoken English Practice(If you fail to do as I say, I will take you suffer.)
    Powershell Exchange Message Per Day Sent and Reveive
    Oracle实例的恢复、介质恢复( crash recovery)( Media recovery)
    Oracle-Rman(物理备份)
    OracleUNDO
    Oracle重做日志REDO
    Oracle存储——逻辑结构
    Oracle 数据库的组成(instance+database)
    Spoken English Practice(I won't succumb to you, not ever again)
    Grammar Rules
  • 原文地址:https://www.cnblogs.com/Run2948/p/10990044.html
Copyright © 2011-2022 走看看