【问题标题】:Please explain how this link works请解释此链接的工作原理
【发布时间】:2011-11-11 09:08:53
【问题描述】:

我遇到了一些遗留代码,这些代码在 Web 服务器上创建了一个文件链接,并为用户提供了一个下载文件的链接。

我想完全了解它是如何工作的。

机器名称

MYSERVER

网址

http://localhost/site/

包含要下载的文件的目录的完整 url 路径

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 中,将鼠标悬停在链接上会在状态栏中显示完整的 URL "http://localhost/site/home/target/downloadable.txt"。在 IE 7(左键或右键单击)中下载文件效果很好。

Firefox 在状态栏中显示"http://localhost/site/home/MYS....\target\downloadable.txt",下载文件并不那么直接。 FF 实际上是尝试更改文件名,以在文件名中包含服务器名称和目标目录。

我尝试了其他方法,例如WebClient.DownloadFile(),但没有成功。这行得通,但我不熟悉 "\..\" 并对它的工作原理感到好奇。

编辑

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

谢谢。

【问题讨论】:

    标签: asp.net vb.net hyperlink download


    【解决方案1】:
    ..\ 
    

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

    您可以将任意数量的这些组合在一起...

    ..\..\..\projects 
    

    意味着返回三个目录,然后进入一个名为项目的文件夹

    【讨论】:

      【解决方案2】:

      .. 仅表示“上一级”。

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

      【讨论】:

      • 正是我最初的想法。我想避免链接中的“..” - 但链接到绝对路径不起作用。
      • 那么您遇到此问题的页面的 URL 是什么?是http://localhost/site/吗?如果是这样,您要链接到该文件的 url 应该只是 home/target/downloadable.txt
      【解决方案3】:

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

      【讨论】:

      • 代码从“home”目录执行。它创建子目录“目标”并将文件放在那里。 ResolveURL 仅在包含主目录 ("~\home\target\downloadable.txt") 时有效。
      • 嗯,为了执行父级文件结构命令,您必须查看整个代码以确定您如何在子目录中结束...但是,如果您使用 resolveURL,您可以获得到应用程序中任何位置的文件。我很抱歉,但我没有意识到该结构是站点\主页。既然如此,那么是的,您需要 ~\home\target..... 结构。
      【解决方案4】:

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

      【讨论】:

      • 我首先认为这是一个路径遍历的东西 - 但该文件不在当前目录的父目录中。它如何从机器名开始,跳过当前目录“home”,进入名为“target”的子目录?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2021-09-22
      • 2015-12-29
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多