web中绝对路径换虚拟路径

最近在做一个web项目,将图片上传到服务器后,再访问时拿到的是绝对路劲,而需要的是虚拟路劲。经过一番折腾找到了下列方法可以直接转换。

 /// <summary>
        /// 将Web站点下的绝对路径转换为虚拟路径
        /// 注:非Web站点下的则不转换
        /// </summary>
        /// <param name="page">当前页面指针,一般为this</param>
        /// <param name="specifiedPath">绝对路径</param>
        /// <returns>虚拟路径, 型如: ~/</returns>
        public static string ConvertSpecifiedPathToRelativePath(Page page, string specifiedPath)

        {
            string virtualPath = page.Request.ApplicationPath;

            string pathRooted = HostingEnvironment.MapPath(virtualPath);

            if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
            {
                return specifiedPath;
            }

            if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
            {
                specifiedPath = specifiedPath.Replace(pathRooted, "~/");
            }
            else
            {
                specifiedPath = specifiedPath.Replace(pathRooted, "~");
            }
            string relativePath = specifiedPath.Replace("\\", "/").Substring(1, specifiedPath.Length - 1);
            return relativePath;
        }

 

备注:  string relativePath = specifiedPath.Replace("\\", "/").Substring(1, specifiedPath.Length - 1); 里面的 Substring(1, specifiedPath.Length - 1)是我自己加的。根据自己需求。原来是string relativePath = specifiedPath.Replace("\\", "/");

posted @   .NET_海  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示