以下代码:
Dim url
url = fso.GetAbsolutePathName(objFile)
给了我
C:\KB\Dev\Java.htm
然后,当我把它写成href时:
Response.Write("<a href='" + url + "'>" + objFile.Name + "</a><br>")
链接在浏览器中翻译成:
file:///C:/KB/Dev/Java/Java.htm
然而我需要它
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>")
但似乎没有任何改变。
答案 0 :(得分:2)
您尝试替换///
,但这些字符不在您的url
变量中。 url
为C:\KB\Dev\Java.htm
。
请改为尝试:
url = Replace(url, "\", "/")
url = Replace(url, "C:/", "file://172.20.4.107/c$/")
另请注意,最终用户的浏览器正在将您的C:\...
路径转换为file://...
格式。这不是在你的ASP代码中发生的。
答案 1 :(得分:2)
什么@Keith suggested绝对没问题,但是由于本地文件链接的超链接被屏蔽,因为它们存在安全风险,因此在大多数现代浏览器中会遇到不同程度的问题。
更强大的解决方案是不使用本地文件链接并完全抵消风险。如果您有权访问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$\