日期:2014-05-18  浏览次数:20459 次

物理路径转虚拟路径问题?
不是虚拟路径转物理路径,而是物理路径转虚拟路径!

我在数据库中有一文件表,在文件表中有一个地址字段(address)用于保存每个文件在服务器上的实际存放路径(全路径),现在我想根据这个路径把文件(比如:flash)放到网页上播放,请问我要在网页中怎么获取这个文件?
注:文件是动态的,根据请求的id确定!
比如:
虚拟目录是:http://localhost/file/fileSave/show.aspx?id=33
与虚拟目录相对应的实际物理路径是:C:\Inetpub\wwwroot\file\fileSave\熊猫.swf


------解决方案--------------------
物理路径转虚拟路径?C:\Inetpub\wwwroot\file\fileSave\熊猫.swf 转为 http://xxx/file/fileSave/熊猫.swf 吗?
1. 先获取根路径的物理路径
string rootPath = Server.MathPath( "/ ");
2. 然后将文件的物理路径中根路径部分删除
string path = "C:\Inetpub\wwwroot\file\fileSave\熊猫.swf ";
path = path.Remove(0, rootPath.Length);
3. 将 "\ " 替换为 "/ "
path = path.Replace( "\\ ", "/ ");

最后的 path 就是虚拟目录路径了。
不过,这个方法有缺陷:当虚拟目录没有放在根目录下时,这个方法会得到错误的结果。

所以,建议:在文件表中有一个地址字段(address) 应该只保存文件的相对路径,