예제 #1
0
        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);
        }
예제 #2
0
        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);
        }