/// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="key">文件地址</param>
        /// <param name="ext">扩展名</param>
        /// <exception cref="Exception"></exception>
        internal bool UploadFile(Stream stream, string key, string ext)
        {
            HttpWebRequest  request  = null;
            HttpWebResponse response = null;

            try
            {
                request           = (HttpWebRequest)WebRequest.Create(Utils.GetUrl(UCloudConfig, key));
                request.KeepAlive = false;
                Utils.SetHeaders(request, ext, UCloudConfig, key, "PUT");
                Utils.CopyFile(request, stream);

                response = HttpWebResponseExt.GetResponseNoException(request);
                Stream body = response.GetResponseStream();
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string e = FormatString(body);
                    LogService.Error(string.Format("{0} {1}", response.StatusDescription, e));
                    return(false);
                }
            }
            catch (System.Exception e)
            {
                LogService.Error(e.ToString());
                return(false);
            }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (response != null)
                {
                    response.Close();
                }
            }

            return(true);
        }
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="key">文件地址</param>
        /// <param name="ext">扩展名</param>
        /// <exception cref="Exception"></exception>
        internal virtual bool UploadFile(Stream stream, string key, string ext)
        {
            HttpWebRequest  request  = null;
            HttpWebResponse response = null;

            try
            {
                request           = (HttpWebRequest)WebRequest.Create(Utils.GetUrl(UCloudConfig, key));
                request.KeepAlive = false;
                Utils.SetHeaders(request, ext, UCloudConfig, key, "PUT");
                Utils.CopyFile(request, stream);

                response = HttpWebResponseExt.GetResponseNoException(request);
                Stream body = response.GetResponseStream();
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string e = FormatString(body);
                    _logger.LogError($"{response.StatusDescription} {e}");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ExtractAllStackTrace());
                return(false);
            }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (response != null)
                {
                    response.Close();
                }
            }

            return(true);
        }