您的位置:首页 - Javascript
javascript获取上传文件的后缀名
在上传文件时,常常要对文件的类型即对文件的后缀名进行判断,用javascript可以很容易的做到这一点。用Javascript解析一个带绝对路径的文件名并得到后缀名的方法有很多种,这里列出一种,以供参考。

体验效果:
http://keleyi.com/keleyi/phtml/javascript/2.htm

或者:http://keleyi.com/keleyi/phtml/javascript/2a.htm


对于一个带绝对路径的文件名如:D:\Program Files\Notepad++\Notepad++.exe

首先为了避免转义反斜杠出问题,可以用正则表达式来将\或\\替换成#,如:

D:#Program Files#Notepad++#Notepad++.exe

之后以‘#’为分隔符,将字符串分解成数组,得到如下数组:

D: ProgramFiles Notepad++ Notepad++.exe

取数组的最后一个即为带后缀的文件名:Notepad++.exe

再以‘.’为分隔符,将这个带后缀的文件名分解成数组,得到如下数组:

Notepad++ exe

然后再取数组的最后一个就可以得到文件的后缀名exe了



代码如下(Win7+IE9测试通过):
//by keleyi(http://keleyi.com)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>javascript获取上传文件的后缀名-柯乐义</title>
</head>
<body>
<script type="text/javascript">
function GetExtensionFileName(pathfilename) {
var reg = /(\\+)/g;
var pfn = pathfilename.replace(reg, "#");
var arrpfn = pfn.split("#");
var fn = arrpfn[arrpfn.length - 1];
var arrfn = fn.split(".");
return arrfn[arrfn.length - 1];
}
function Test() {
var filePath = "D:\\Program Files\\keleyi\\file.exe";
filePath = document.getElementById("ke"+"leyifile").value;
if (filePath == "") {
alert("未选择文件");
return;
}
alert("文件后缀名为:" + GetExtensionFileName(filePath));
}</script>
<input type="file" id="keleyifile" />
<input type="button" value="获取文件后缀名" onclick="Test()" />
</body>
</html>

点击Test按钮就可以弹出内容为exe的对话框,表示GetExtensionFileName能正确解析带绝对路径的文件名并得到后缀名。

在Windows 2003中Chrome,IE8,火狐测试也通过。

估计这种方法只能在Windows平台下使用吧,在Linux执行下不知道会如何?
本站导航
相关文章
柯乐义 Copyright© keleyi.com