我遇到了一些遗留代码,这些代码创建了指向Web服务器上文件的链接,并为用户提供了下载文件的链接。
我想完全理解它是如何运作的。
计算机名称:
MYSERVER
网址:
http://localhost/site/
包含要下载文件的目录的完整网址路径:
http://localhost/site/home/target/
目标文件名:
downloadable.txt
代码执行以下操作以创建指向'downloadable.txt'的链接
server.machinename.tostring & "\..\target\downloadable.txt"
结果是:
"MYSERVER\..\target\downloadable.txt"
该链接在页面上显示为:
<a href="MYSERVER\..\target.downloadable.txt">download this file</a>
在 IE 7 中,鼠标悬停在链接上会在状态栏中显示完整的网址"http://localhost/site/home/target/downloadable.txt"
。它适用于在IE 7中下载文件(左键或右键单击)。
Firefox 在状态栏中显示"http://localhost/site/home/MYS....\target\downloadable.txt"
,下载文件并不是那么简单。 FF实际上尝试更改文件名以在文件名中包含服务器名称和目标目录。
我尝试了其他方法,例如WebClient.DownloadFile()
,但没有成功。这有效,但我不熟悉“\ .. \”并对它的工作方式感到好奇。
修改:
我理解“..”通常意味着上一个目录。我的 问题实际上更像是“如何解释 在浏览器中整理路径?“
感谢。
答案 0 :(得分:3)
..\
表示返回目录(到当前目录的父目录)
你可以根据自己的喜好将这些数据放在一起......
..\..\..\projects
意味着返回三个目录,然后进入名为projects
的文件夹中答案 1 :(得分:2)
..
只是意味着'提升一级'。
顺便说一句,在Windows上,目录分隔符是\
,但在URL中它应该是/
。另外,尽量避免在其中创建包含..
的链接,只需使用它的绝对路径直接链接到该文件。
答案 2 :(得分:1)
看起来用于创建链接的aspx文件位于子目录中。所以它遍历到主目录,然后到目标目录.. .. \表示我当前的目录,然后将其移动到其父目录(上一级,应该将您放入主目录)然后向下进入目标目录。 在.Net 2.0中,您应该使用ResolveURL方法。这会消除一些混乱,因为它会读取ResolveURL(“〜\ target \ downloadfile.txt”)。代字号将它放在IIS中定义的网站的主目录中。
答案 3 :(得分:0)
双点(..)指定位于当前目录的父文件中的文件。