/// <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); }
/// <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)}"); }
/// <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)}"); }