这在实际中也是很有用的,一般情况下,文件路径是用虚拟路径来表示,但有时必须使用物理路径,比如文件上传或对服务器上的文件进行操作,就必须使用物理路径。Server对象提供的MapPath方法,可以从一个有效虚拟路径下的任何文件上提取相应的实际物理路径。
MapPath方法的语法如下:
Server.MapPath(path)
path:指定相对或虚拟路径或文件名,返回实际路径。
例如:
<%
SerVer.MapPath("./Myfile.asp")
Server.MapPalh("Myfile.asp")
%>
若在所给定的path参数前加“/”或“\”符号,则表示要把虚拟的全路径映射成完整的实际路径,即MapPath方法返回路径时将Path视为完整的虚拟路径。如果不是以斜杠开始,则MapPath方法返回与.asp文件中已有路径的相对路径。由于ASP要求在存取文件夹、文件或数据库数据时必须使用实际路径,所以在这种情况下,可以使用Server.MapPath(path)方法,将path指定的虚拟路径转换成实际路径。
Server.MapPath的用法
./当前目录
/根目录
../上层目录(相对当前来说)
如果当前的网站目录为D:wwwroot浏览的页面路径为D:wwwrootcompanynewsshow.asp
在show.asp页面中使用
Server.MapPath("./")返回路径为:D:wwwrootcompanynews
Server.MapPath("/")返回路径为:D:wwwroot
Server.MapPath("../")返回路径为:D:wwwrootcompany
server.MapPath(request.ServerVariables("Path_Info"))
Request.ServerVariables("Path_Translated")
上面两种方式返回路径为D:wwwrootcompanynewsshow.asp
尽可能地使用Server.MapPath
尽可能地使用Server.MapPath()来表示存储在服务器上的文件,而不要用静态绝对路径。因为,如果采用静态绝对路径,当web路径发生变化时,将导致文件路径表达错误,从而不得不修改原静态路径。而使用Server.MapPath()表示的路径就不必再做修改。

比如,以下的代码就不是好的方法:
<%
whichfile="D:inetpubwwwrootwhateverjunk.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile(whichfile, 1, False)
tempSTR=thisfile.readall
response.write tempSTR
thisfile.Close
set thisfile=nothing
set fs=nothing
%>
建议使用下面的代码来完成同样的功能:
<%
whichfile=server.mappath("whateverjunk.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile(whichfile, 1, False)
tempSTR=thisfile.readall
response.write tempSTR
thisfile.Close
set thisfile=nothing
set fs=nothing
%>