.NET 中的绝对路径和相对路径

在做网页时老是遇到什么“相对路径”“绝对路径”,听起来好像很熟悉的样子,可真正操作起来就郁闷,今天就在这里做个小小的总结。

1、绝对路径 

   绝对路径是指文件在硬盘上真正存在的路径例如“bg.jpg”这个图片是存放在硬盘的“E:\book\网页布局代码\”目录下,那么“bg.jpg”这个图片的绝对路径就是“E:\book\网页布代码\bg.jpg"。那么如果要使用绝对路径指定网页的背景图片就应该使用以下语句:

<body backround="E:\book\网页布局代码\bg.jpg" > 

2、使用绝对路径的缺点

   事实上,在网页编程时,很少会使用绝对路径,如果使用“E:\book\网页布代码\bg.jpg”来指定背景图片的位置,在自己的计算机上浏览可能会一切正常,但是上传到Web服务器上浏览就很有可能不会显示图片了。因为上传到Web服务器上时,可能整个网站并没有放在Web服务器的E盘,有可能是D盘或H盘。即使放在Web服务器的E盘里,Web服务器的E盘里也不一定会存在“E:\book\网页布局代码”这个目录,因此在浏览网页时是不会显示图片的。

3、相对路径

   为了避免以上绝对路径那种情况发生,通常在网页里指定文件时,都会选择使用相对路径。所谓相对路径,就是相对于自己的目标文件位置。例如上面的例子,“s1.htm”文件里引用了“bg.jpg”图片,由“bg.jpg”图片相对于“s1.htm”来说,是在同一个目录的,那么要在“s1.htm”文件里使用以下代码后,只要这两个文件的相对位置没有变(也就是说还是在同一个目录内),那么无论上传到Web服务器的哪个位置,在浏览器里都能正确地显示图片。

      <body background="bg.jpg">

再举一个例子,假设“s1.htm”文件所在目录为“E:\book\网页布局代码”,而“bg.jpg”图片所在目录为“E:\book\网页布局代码\img”,那么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的“img”子目录里,则引用图片的语句应该为:

      <body background="img/bg.jpg">   

    注意:相对路径使用“/”字符作为目录的分隔字符,而绝对路径可以使用“\”或“/”字符作为目录的分隔字符。由于“img”目录是“网页布局代码”目录下的子目录,因此在“img”前不用再加上“/”字符。

在相对路径里常使用“../”来表示上一级目录。如果有多个上一级目录,可以使用多个“../”,例如“../../”代表上上级目录。假设“s1.htm”文件所在目录为“E:\book\网页布局代码\代码”,而“bg.jpg”图片所在目录为“E:\book\网页布局代码”,那么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的上级目录里,则引用图片的语句应该为:

      <body background="../bg.jpg">   

    再举一个例子,假设“s1.htm”文件所在目录为“E:\book\网页布局代码\代码”,而“bg.jpg”图片所在目录为“E:\book\网页布局代码\img”,那么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的上级目录里的“img”子目录里,则引用图片的语句应该为:

      <body background="../img/bg.jpg">           

4、相对虚拟目录

   有关相对路径还有一个比较特殊的表示:“相对虚拟目录”。请看下面的例子:

      <body background="/img/bg.jpg">   

   在这个例子里,background属性的值为“/img/bg.jpg”,注意在“img”前有一个“/”字符。这个“/”代表的是虚拟目录的根目录.假设把“E:\book\网页布局\代码”设为虚拟目录,那么“/img/bg.jpg”的真实路径为“E:\book\网页布局\代码\img\bg.jpg”;如果把“E:\book\网页布局\代码\第2章”设为虚拟目录,那么“/img/bg.jpg”的真实路径为“E:\book\网页布局\代码\第2章\img\bg.jpg”


附:
   //本地路径转换成URL相对路径
   private string urlconvertor(string imagesurl1)
   {
        string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
        string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); //转换成相对路径
         imagesurl2 = imagesurl2.Replace(@"\", @"/");
        //imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @"");
        return imagesurl2;
     }
    //相对路径转换成服务器本地物理路径
    private string urlconvertorlocal(string imagesurl1)
    {
        string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
        string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"\"); //转换成绝对路径
         return imagesurl2;
     }
1.使用filePath="/Logs/abc.txt",被认为是根目录,即网页文件所在的盘符,默认的是C盘,则在这里这个路径被解释为"C:\Logs\abc.txt"
2.使用filePath="~/Logs/abc.txt",被认为是服务器的目录
3.使用filePath="./Logs/abc.txt",仍然是服务器目录下 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值