zoukankan      html  css  js  c++  java
  • [网络收集]asp.net文件路径问题

    如果有文件夹abc,和aaa.jpg文件
    ./abc/aaa.jpg
    ./abc\aaa.jpg
    ../abc/aaa.jpg
    ~/abc/aaa.jpg
    /abc/aaa.jpg
    http://localhost/abc/aaa.jpg
    Server.MapPath("./abc/")+"aaa.jpg"
    以及"//"和"\"含义!

    / 是超文本协议的路径分隔符号,所有的网站在浏览器中显示的路径分隔都是以"/"表示.它一般代表虚拟路径.
    在普通程序代码中则以"\"表示文件路径分隔符号.它一般指物理路径.
    ./ 表示在当前路径下,
    ../表示在当前路径的上一级路径下.
    ~/表示当前网站的根目录下.
    比如有网站路径如下
    C:\Inetpub\wwwroot\test\
    新闻路径如下
    C:\Inetpub\wwwroot\test\news\
    C:\Inetpub\wwwroot\test\news\2008\
    C:\Inetpub\wwwroot\test\news\2008\info\

    假设每个文件夹下面有个Default.aspx
    以C:\Inetpub\wwwroot\test\news\2008\Default.apsx为例:
    调试时显示路径为
    http://localhost/test/news/2008/default.aspx 反斜杠都是虚拟路径分隔,它不会显示C:\Inetpub\wwwroot这节物理路径.
    ~/Default.aspx 指向C:\Inetpub\wwwroot\test\Default.aspx
    显示
    Http://localhost/test/default.aspx
    ../Default.aspx 指向C:\Inetpub\wwwroot\test\news\Default.aspx(两点表示当前文件的上一级目录)
    显示
    Http://localhost/test/news/default.aspx
    /info/Default.aspx 指向C:\Inetpub\wwwroot\test\news\2008\info\Default.aspx
    显示
    Http://localhost/test/news/2008/info/default.aspx

    / 是超文本协议的路径分隔符号,所有的网站在浏览器中显示的路径分隔都是以"/"表示.它一般代表虚拟路径.
    在普通程序代码中则以"\"表示文件路径分隔符号.它一般指物理路径.

    ./指的是当前目录
    ../指上一级目录
    /的话,从根目录开始。
    ~/的话,从当前项目开始(.NET 2.0新加)。
    http://localhost/的话,连域名也包含了,当你换一个域名的话就不能访问了。
    Server.MapPath("./abc/")+"aaa.jpg"得到的是在当前服务器上的物理路径。

    (1)/    任何场合它都表示根目录;
    (2)~/ 由asp.net引擎帮你解析,也就是说,除了服务器控件外,其它地方(即HTML)使用都是无效的,它表示虚拟目录的根目录;《置疑》
    (3)./ (一个点+斜杠)html中使用,表示当前目录;
    (4)../ (两个点+斜杠)html中使用,表示当前目录的上一级目录。

    可以通过以下来进行测试:
    我的网站IIS目录为htdocs\,里面放着三个独立的网站,分别为WebSoft、HardWare、和Iss三个文件夹,测试页面放在WebSoft文件夹下的usercenter里,即Websoft/UserCenter/Test.aspx
    protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(Server.MapPath ("/"));
            Response.Write("<br />");
            Response .Write (Server .MapPath ("~/"));
            Response.Write("<br />");
            Response.Write(Server.MapPath("."));   //一个点
            Response.Write("<br />");
            Response.Write(Server.MapPath("./"));    //一点+斜杠
            Response.Write("<br />");
             Response.Write(Server.MapPath("../"));   //两点+斜杠
        }
    测试结果为
    D:\hosting\wwwroot\bjghsj_com\htdocs\
    D:\hosting\wwwroot\bjghsj_com\htdocs\
    D:\hosting\wwwroot\bjghsj_com\htdocs\Websoft\UserCenter
    D:\hosting\wwwroot\bjghsj_com\htdocs\Websoft\UserCenter\    //有反斜杠
    D:\hosting\wwwroot\bjghsj_com\htdocs\Websoft\
    D:\hosting\wwwroot\bjghsj_com\htdocs\


  • 相关阅读:
    二叉搜索树的第k个结点
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个结点
    删除链表中重复的结点
    链表中环的入口结点
    字符流中第一个不重复的字符
    基数排序的理解和实现(Java)
  • 原文地址:https://www.cnblogs.com/lushuicongsheng/p/1897920.html
Copyright © 2011-2022 走看看