public static string?GuessFileNameFromUrl(string url, int?limitedFileNameLength = null, string?fallbackName = null)
            {
                var lastSlash = url.LastIndexOf('/') + 1;

                var lastQuery = url.IndexOf('?');

                if (lastSlash < 0)
                {
                    return(fallbackName);
                }

                // 取 URL 中可能是文件名的部分。
                var name = lastQuery < 0 ? url.Substring(lastSlash) : url.Substring(lastSlash, lastQuery - lastSlash);

                // 对 URL 反转义。
                var unescapedName = Uri.UnescapeDataString(name);

                // 限制文件名长度。
                string?limitedFileName = limitedFileNameLength is null
                    ? unescapedName
                    : unescapedName.Length <= limitedFileNameLength.Value ? unescapedName : fallbackName;

                // 确保文件名字符是安全的。
                string?safeFileName = limitedFileName is null
                    ? limitedFileName
                    : FileNameHelper.MakeSafeFileName(limitedFileName);

                return(safeFileName);
            }