private string GetOriginalLocalFilePath(HttpRequest request) { string result = null; PathString path = null; if (request.Path.StartsWithSegments("/admin/vfs", out path) || request.Path.StartsWithSegments("/admin/zip", out path)) { if (VfsSpecialFolders.TryParse(path, out result)) { return(result); } } result = RootPath; if (path != null && path.HasValue) { result = Path.GetFullPath(Path.Combine(result, path.Value.TrimStart('/'))); } else { string reqUri = request.GetRequestUri().AbsoluteUri.Split('?').First(); if (reqUri[reqUri.Length - 1] == UriSegmentSeparator) { result = Path.GetFullPath(result + Path.DirectorySeparatorChar); } } return(result); }
private string GetOriginalLocalFilePath(HttpRequest request) { string result = null; PathString path = null; if (request.Path.StartsWithSegments("/admin/vfs", out path) || request.Path.StartsWithSegments("/admin/zip", out path)) { if (VfsSpecialFolders.TryParse(path, out result)) { return(result); } } if (request.Query.TryGetValue("relativePath", out StringValues values) && values.Contains("1")) { // the VFS path should be treated as relative to the functions script root directory result = Path.GetFullPath(_options.CurrentValue.ScriptPath); } else { result = RootPath; } if (path != null && path.HasValue) { result = Path.GetFullPath(Path.Combine(result, path.Value.TrimStart('/'))); } else { string reqUri = request.GetRequestUri().AbsoluteUri.Split('?').First(); if (reqUri[reqUri.Length - 1] == UriSegmentSeparator) { result = Path.GetFullPath(result + Path.DirectorySeparatorChar); } } return(result); }