Vbscript 经典ASP:替换字符串

Vbscript 经典ASP:替换字符串,vbscript,asp-classic,Vbscript,Asp Classic,以下代码: Dim url url = fso.GetAbsolutePathName(objFile) 给我 C:\KB\Dev\Java.htm 然后,当我将其写为href时: Response.Write("<a href='" + url + "'>" + objFile.Name + "</a><br>") 而我需要它 file://172.20.4.107/c$/KB/Dev/Java/Java.htm 否则,该链接将对导航无

以下代码:

Dim url       
url = fso.GetAbsolutePathName(objFile)
给我

C:\KB\Dev\Java.htm
然后,当我将其写为href时:

Response.Write("<a href='" + url + "'>" + objFile.Name + "</a><br>")
而我需要它

file://172.20.4.107/c$/KB/Dev/Java/Java.htm
否则,该链接将对导航无效

我试着:

url = Replace(url, "///", "//172.20.4.107/")
url = Replace(url, "c:", "c$")
Response.Write(url & "<br>")
url=Replace(url,“///”,“//172.20.4.107/”)
url=替换(url,“c:,“c$”)
响应。写入(url&“
”)

但是似乎什么都没有改变。

您试图替换
//
,但这些字符不在
url
变量中
url
C:\KB\Dev\Java.htm

请尝试以下方法:

url = Replace(url, "\", "/")
url = Replace(url, "C:/", "file://172.20.4.107/c$/")
还要记住,是最终用户的浏览器将您的
C:\…
路径转换为
file://...
格式。这在您的ASP代码中不会发生。

这是绝对正确的,但在大多数现代浏览器中,您会遇到不同程度的问题,因为本地文件链接的超链接被阻止,因为它们存在安全风险

更可靠的解决方案是不使用本地文件链接,并完全消除风险。如果您有权访问IIS(如果您使用的是经典ASP,您可能有权以某种形式访问IIS),您可以通过创建指向远程计算机共享的虚拟目录来实现这一点,并根据需要锁定权限

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

http://yourhost/KB/dev/java.htm 您还可以调用共享
KB$
,以对网络浏览器隐藏该共享

\\172.20.4.107\KB$\ \\172.20.4.107\KB$\
有用的链接

就是这样!但是,为什么现在,当链接看起来是正确的,当我点击它时,它不会指向这个地址(甚至当我尝试“在新选项卡中打开它”时,我会得到一个“关于:空白”页面…这可能是权限问题,最有可能是在c$共享上。@dushkin,因为浏览器认为通过超链接访问网络文件共享存在安全风险。也就是说,这可能会有帮助-@Lankymart Strange…因为如果我复制链接的快捷方式并将其粘贴到地址栏中,它会毫无问题地打开。有办法吗为了克服这个问题?我也会浏览你的链接…@dushkin \\172.20.4.107\c$\KB\ \\172.20.4.107\KB\ \\172.20.4.107\KB$\