经典ASP:替换一个字符串

Classic ASP: replacing a string

以下代码:

Dim url       
url = fso.GetAbsolutePathName(objFile)

给我

C:\KB\Dev\Java.htm

然后,当我把它写成 href 时:

Response.Write("<a href='" + url + "'>" + objFile.Name + "</a><br>")

link 在浏览器中被翻译成:

file:///C:/KB/Dev/Java/Java.htm

而我需要它

file://172.20.4.107/c$/KB/Dev/Java/Java.htm

否则,link 将无法导航。

我正在尝试:

url = Replace(url, "///", "//172.20.4.107/")
url = Replace(url, "c:", "c$")
Response.Write(url & "<br>")

但似乎没有任何改变。

您正在尝试替换 ///,但这些字符不在您的 url 变量中。 urlC:\KB\Dev\Java.htm.

试试这个:

url = Replace(url, "\", "/")
url = Replace(url, "C:/", "file://172.20.4.107/c$/")

另请记住,将您的 C:\... 路径转换为 ​​file://... 格式的是最终用户的 浏览器 。这不会发生在您的 ASP 代码中。

什么 @Keith 绝对没问题,但在大多数现代浏览器中,您会遇到不同程度的问题,因为来自本地文件链接的超链接被阻止,因为它们存在安全风险。

更稳健的解决方案是不使用本地文件链接并完全消除风险。如果您可以访问 IIS (如果您使用的是经典 ASP,您可能可以以某种形式访问 IIS),您可以通过创建一个指向您的远程计算机共享并锁定您认为合适的权限。

假设您设置了一个虚拟目录以指向别名 KB 然后您就可以访问它;

http://yourhost/KB/dev/java.htm

如果虚拟目录被映射到

\172.20.4.107\c$\KB\

但是我们可以更进一步,c$ 等管理共享不可配置,供系统使用。为了更好地控制映射目录,例如在远程计算机上创建共享 KB 并适当设置 NTFS 权限,然后将虚拟目录指向;

\172.20.4.107\KB\

您也可以调用共享 KB$ 来隐藏网络浏览器的共享。

\172.20.4.107\KB$\

有用的链接