Example #1
0
        /// <summary>
        ///     时间戳防盗链
        /// </summary>
        /// <param name="host">主机,如http://domain.com</param>
        /// <param name="fileName">文件名,如 hello/world/test.jpg</param>
        /// <param name="query">请求参数,如?v=1.1</param>
        /// <param name="encryptKey">后台提供的key</param>
        /// <param name="expireInSeconds">链接有效时长</param>
        /// <returns>时间戳防盗链接</returns>
        public static string CreateTimestampAntiLeechUrl(
            string host,
            string fileName,
            string query,
            string encryptKey,
            int expireInSeconds)
        {
            var    expireAt  = UnixTimestamp.GetUnixTimestamp(expireInSeconds);
            var    expireHex = expireAt.ToString("x");
            var    path      = $"/{Uri.EscapeUriString(fileName)}";
            var    toSign    = $"{encryptKey}{path}{expireHex}";
            var    sign      = Hashing.CalcMd5X(toSign);
            string finalUrl;

            if (!string.IsNullOrEmpty(query))
            {
                finalUrl = $"{host}{path}?{query}&sign={sign}&t={expireHex}";
            }
            else
            {
                finalUrl = $"{host}{path}?sign={sign}&t={expireHex}";
            }

            return(finalUrl);
        }
Example #2
0
        /// <summary>
        ///     生成默认的断点记录文件名称
        /// </summary>
        /// <param name="localFile">待上传的本地文件</param>
        /// <param name="key">要保存的目标key</param>
        /// <returns>用于记录断点信息的文件名</returns>
        public static string GetDefaultRecordKey(string localFile, string key)
        {
            var tempDir   = Environment.GetEnvironmentVariable("TEMP");
            var fileInfo  = new System.IO.FileInfo(localFile);
            var uniqueKey = $"{localFile}:{key}:{fileInfo.LastWriteTime.ToFileTime()}";

            return($"{tempDir}\\{"QiniuResume_" + Hashing.CalcMd5X(uniqueKey)}");
        }
Example #3
0
        /// <summary>
        ///     多部分表单数据(multi-part form-data)的分界(boundary)标识
        /// </summary>
        /// <returns>分界(boundary)标识字符串</returns>
        public static string CreateFormDataBoundary()
        {
            var now = DateTime.UtcNow.Ticks.ToString();

            return($"-------{QiniuCSharpSdk.Alias}Boundary{Hashing.CalcMd5X(now)}");
        }