请解释此链接的工作原理

时间:2011-09-06 14:03:34

标签: asp.net vb.net hyperlink download

我遇到了一些遗留代码,这些代码创建了指向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(),但没有成功。这有效,但我不熟悉“\ .. \”并对它的工作方式感到好奇。

修改

我理解“..”通常意味着上一个目录。我的 问题实际上更像是“如何解释 在浏览器中整理路径?“

感谢。

4 个答案:

答案 0 :(得分:3)

..\ 

表示返回目录(到当前目录的父目录)

你可以根据自己的喜好将这些数据放在一起......

..\..\..\projects 

意味着返回三个目录,然后进入名为projects

的文件夹中

答案 1 :(得分:2)

..只是意味着'提升一级'。

顺便说一句,在Windows上,目录分隔符是\,但在URL中它应该是/。另外,尽量避免在其中创建包含..的链接,只需使用它的绝对路径直接链接到该文件。

答案 2 :(得分:1)

看起来用于创建链接的aspx文件位于子目录中。所以它遍历到主目录,然后到目标目录.. .. \表示我当前的目录,然后将其移动到其父目录(上一级,应该将您放入主目录)然后向下进入目标目录。 在.Net 2.0中,您应该使用ResolveURL方法。这会消除一些混乱,因为它会读取ResolveURL(“〜\ target \ downloadfile.txt”)。代字号将它放在IIS中定义的网站的主目录中。

答案 3 :(得分:0)

双点(..)指定位于当前目录的父文件中的文件。