Compare commits

...
3 Commits
Author SHA1 Message Date
xrain 04b2be1bb7 fix bug 2024-07-21 13:50:12 +08:00
xrain f78c3a0e0d fix fullurl 不抛出异常了 2024-07-10 06:35:19 +08:00
xrain 506704fd90 fix fullurl 不抛出异常了 2024-07-10 06:29:36 +08:00
+24 -2
View File
@@ -114,8 +114,9 @@ public class SimApiStorage
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
public string FullUrl(string path) public string FullUrl(string path)
{ {
if (string.IsNullOrEmpty(path)) return path;
if(path.StartsWith("http://") || path.StartsWith("https://")) return path; if(path.StartsWith("http://") || path.StartsWith("https://")) return path;
if (!(path.StartsWith('/') || path.StartsWith("~/"))) throw new Exception("path must start with / or ~/"); if (!(path.StartsWith('/') || path.StartsWith("~/"))) return path;
var httpRequest = HttpContextAccessor.HttpContext?.Request; var httpRequest = HttpContextAccessor.HttpContext?.Request;
var url = $"{httpRequest?.Scheme}://{httpRequest?.Host}"; var url = $"{httpRequest?.Scheme}://{httpRequest?.Host}";
if (string.IsNullOrEmpty(path)) if (string.IsNullOrEmpty(path))
@@ -126,6 +127,27 @@ public class SimApiStorage
return path.StartsWith('~') ? string.Concat(url, path.AsSpan(1, path.Length - 1)) : $"{ServeUrl}{path}"; return path.StartsWith('~') ? string.Concat(url, path.AsSpan(1, path.Length - 1)) : $"{ServeUrl}{path}";
} }
/// <summary>
/// 获取一个Path得访问URL
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public string? GetUrl(string? path)
{
if (string.IsNullOrEmpty(path)) return path;
if (path.StartsWith("~/"))
{
var httpRequest = HttpContextAccessor.HttpContext?.Request;
var url = $"{httpRequest?.Scheme}://{httpRequest?.Host}";
return string.Concat(url, path.AsSpan(1, path.Length - 1));
}
if (path.StartsWith('/'))
{
return $"{ServeUrl}{path}";
}
return path;
}
/// <summary> /// <summary>
/// 从URL中获取相对路径 (如果url不是当前服务器的url,则原样返回) /// 从URL中获取相对路径 (如果url不是当前服务器的url,则原样返回)
/// </summary> /// </summary>
@@ -133,7 +155,7 @@ public class SimApiStorage
/// <returns></returns> /// <returns></returns>
public string? GetPath(string? url) public string? GetPath(string? url)
{ {
return url?.Replace($"{Endpoint}/{Bucket}", string.Empty); return url?.Replace($"{Endpoint}/{Bucket}", string.Empty).Replace(ServeUrl,string.Empty);
} }
private void CheckPath(string path) private void CheckPath(string path)