文件引用的路径问题
对于稍具规模的系统,为便于维护,我们很少会将所有文件放在同一个文件夹中。
那么某一文件夹中的网页,如何引用其他文件夹中的文件呢。
使用绝对路径
如果被引用文件的路径是固定的,那么使用绝对路径即可。
假定"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".