文件引用的路径问题

对于稍具规模的系统,为便于维护,我们很少会将所有文件放在同一个文件夹中。

那么某一文件夹中的网页,如何引用其他文件夹中的文件呢。

使用绝对路径

如果被引用文件的路径是固定的,那么使用绝对路径即可。

假定"d:\web"为网页根目录,图片文件"abc.jpg"位于该目录的"images"子目录下。
那么在任何路径的网页,都可以通过路径"/images/abc.jpg"引用此图片,"/"表示根目录"d:\web",所以"/images/abc.jpg"就表示"d:\web\images\abc.jpg"。

示例

现在将文件"abc.jpg"复制到目录"d:\web\images"下,然后将HttpRequest事件代码改为:

Dim fl As String = "d:\web\" & e.path
If
filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf"
            e.WriteFile(fl)
    End
Select

Else

    Dim sb As New StringBuilder
    sb.Appendline("我想显示一个图片<br/><br/>")
    Select Case e.path
        Case "a.htm"
            sb.AppendLine("<img src='/images/abc.jpg'>")
        Case "sub1\a.htm"
            sb.AppendLine("<img src='/images/abc.jpg'>")
         Case "sub1\sub2\a.htm"
            sb.AppendLine("<img src='/images/abc.jpg'>")
    End Select
    e.WriteString(sb.ToString())

End
If

现在你通过下面三个网页访问HttpServer:

http://127.0.0.1/a.htm
http://127.0.0.1/sub1/a.htm
http://127.0.0.1/sub1/sub2/a.htm

可以看到,三个不同路径的网页,使用相同的引用路径""\images\abc.jpg"",都可以正常显示图片"d:\web\images\abc.jpg"。

使用相对路径

如果要使用相对路径,需要用到两个重要的符号,一个是表示网页所在的目录的".",一个是表示父目录的".."

假定网页所在目录为"d:\web"目录,图片文件位于该目录的images子目录下,也就是"d:\web\images"目录下,那么使用相对路径的代码为:

<img src='./images/abc.jpg'>

"."表示网页所在目录"d:\web",所以"./images"表示"d:\web\images"

假定网页所在目录为"d:\web\sale"目录,图片文件位于"d:\web\images"目录下, 那么使用相对路径的代码为:

<img src='../images/abc.jpg'>

".."表示"d:\web\sale"的父目录,也就是"d:\web", 所以"../images"表示"d:\web\images"。

示例

现在将文件"abc.jpg"复制到目录"d:\web\images"下,然后将HttpRequest事件代码改为:

Dim fl As String = "d:\web\" & e.path
If
filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf"
            e.WriteFile(fl)
    End
Select

Else

    Dim sb As New StringBuilder
    sb.Appendline(
"
我想显示一个图片<br/><br/>")
    Select Case e.path
        Case "a.htm"
            sb.AppendLine("<img src='.\images\abc.jpg'>")
        Case "sub1\a.htm"
            sb.AppendLine("<img src='..\images\abc.jpg'>")
         Case "sub1\sub2\a.htm"
            sb.AppendLine("<img src='..\..\images\abc.jpg'>")
    End Select
    e.WriteString(sb.ToString())

End
If

现在你通过下面三个网页访问HttpServer:

http://127.0.0.1/a.htm
http://127.0.0.1/sub1/a.htm
http://127.0.0.1/sub1/sub2/a.htm

都可以正常显示"d:\web\images"的图片"abc.jpg".


本页地址:http://www.foxtable.com/mobilehelp/topics/0044.htm