JavaScript获得当前文件的路径

在ASP.NET中,获得文件的物理路径可以使用server.mapPath()方法得到,

而在JavaScript中则是没有这个方法的,这里给出JavaScript如何获得文件的路径:

function serverMapPath(fileName){
var syspath = location.href;
syspath = syspath.toLowerCase();      //把路径名称转换成小写
myPosition = syspath.lastIndexOf("/");  // 获取文件路径中的最后一个"/"

syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径

syspath = syspath.replace("file:///","");   //这里要把file:///替换为空,否则会报错

syspath = syspath.replace(new RegExp("%20","gm")," ");   // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " "

syspath = syspath + fileName;
return syspath.toString();
}


大家知道在JavaScript中有个 location.href ,但是这个属性有时候获得的文件路径不一定正确。

//////////////////////////////////////////////////////////////////////////////

demo http://www.cnall.org/lab/js/locArray.html

源码:

function getCurrentDirectory(){
var locHref = location.href;
var locArray = locHref.split("/");
/**这里测试locArray效果**
    for(x in locArray){
      document.write("locArray[");
      document.write(x+"]: ");
      document.write(locArray[x]+"<br />");
    }
    **/
    delete locArray[locArray.length-1];
    var dirTxt = locArray.join("/");
    return dirTxt;
}

document.write(getCurrentDirectory());

讲解:

location.href,当前的URL
var locArray = locHref.split("/");,把当前的URL变成Array,效果如下:

locArray[0]: http:
locArray[1]:
locArray[2]: localhost
locArray[3]: cnall.org
locArray[4]: lab
locArray[5]: js
locArray[6]: locArray.html

注意locArray[1]这个地方的内容,这个是因为处理"http://"中"//"的结果


delete locArray[locArray.length-1];,使用delete来删除Array中的一个项目
Delete杀伤力很大,还可以用于删除一个Object的Property,具体内容请查阅这里:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:delete_Operator

var dirTxt = locArray.join("/");,利用join来粘合
join经常和split配合使用,请多多练习


/////////////////////////////////////////////
var GetPath:function(){
var a=window.location.href.substr(7+document.domain.length);
var A=a.split("/");
a=a.substr(0,a.length-A[A.length-1].length);
return a;
}
////////////////////////////////////////////
function serverMapPath(fileName){
var syspath = location.href; 
syspath 
= syspath.toLowerCase();      //把路径名称转换成小写
myPosition = syspath.lastIndexOf("/");  // 获取文件路径中的最后一个"/"

syspath 
= syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径 

syspath 
= syspath.replace("file:///","");   //这里要把file:///替换为空,否则会报错

syspath 
= syspath.replace(new RegExp("%20","gm")," ");   // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " "

syspath 
= syspath + fileName; 
return syspath.toString();

posted on 2010-10-21 09:09 wrh 阅读(2176) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(19)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜