예제 #1
0
        /// <summary>
        /// 码云图床
        /// </summary>
        /// <param name="config"></param>
        /// <param name="stream"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        private Task <(string url, bool success)> UploadGitee(GitlabConfig config, Stream stream, string file)
        {
            var path = $"{DateTime.Now:yyyy/MM/dd}/{file}";

            return(_httpClient.PostAsJsonAsync(config.ApiUrl + HttpUtility.UrlEncode(path), new
            {
                access_token = config.AccessToken,
                content = Convert.ToBase64String(stream.ToArray()),
                message = SnowFlake.NewId
            }).ContinueWith(t =>
            {
                if (t.IsCompletedSuccessfully)
                {
                    using var resp = t.Result;
                    using var content = resp.Content;
                    if (resp.IsSuccessStatusCode || content.ReadAsStringAsync().Result.Contains("already exists"))
                    {
                        return (config.RawUrl + path, true);
                    }
                }

                LogManager.Info("图片上传到gitee失败。");
                throw t.Exception ?? new Exception(t.Result.ReasonPhrase);
            }));
        }
예제 #2
0
        /// <summary>
        /// 码云图床
        /// </summary>
        /// <param name="config"></param>
        /// <param name="stream"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        private async Task <(string url, bool success)> UploadGitee(GitlabConfig config, Stream stream, string file)
        {
            string path = $"{DateTime.Now:yyyy/MM/dd}/{Path.GetFileName(file)}";

            using var resp = await _httpClient.PostAsJsonAsync(config.ApiUrl + HttpUtility.UrlEncode(path), new
            {
                access_token = config.AccessToken,
                content      = Convert.ToBase64String(stream.ToByteArray()),
                message      = "上传一张图片"
            });

            if (resp.IsSuccessStatusCode || (await resp.Content.ReadAsStringAsync()).Contains("already exists"))
            {
                return(config.RawUrl + path, true);
            }

            return(UploadOss(stream, file));
        }