2015-05-17 211 views
0

我正在尝试检查文件是否具有有效的扩展名。问题是,当我给文件一个像.txt这样的随机扩展时,它不会被捕获。获取文件的扩展名,但无法获取文件名

我认为问题在于我实际上并没有得到完整的文件名。

<script type="text/javascript"> 
    function getExtension(fileName) 
    { 
     var parts = fileName.split('.'); 
     return parts[parts.length - 1]; 
    } 

    function isVideo(fileName) 
    { 
     var ext = getExtension(fileName); 

     switch (ext.toLowerCase()) 
     { 
      case 'mp4': return true; 
     } 

     return false; 
    } 

    function check() 
    { 
     var f = document.getElementsByID('file'); 

     if(isVideo(f.value) && document.getElementById('file').value) 
     { 
      return true; 
     } 

     document.getElementById('errMsg').style.display = ''; 

     return false; 
    } 

</script> 

PHP的形式:

<?php 
$nexturl = "http://localhost/index.php"; 
?> 

<form action="<?php echo($response->url); ?>?nexturl=<?php echo(urlencode($nexturl)); ?>" method="post" enctype="multipart/form-data" onsubmit="return check();"> 
    <input id="file" type="file" name="file"/> 
    <div id="errMsg" style="display:none;color:red"> 
    Bad file type. 
    </div> 
    <input type="hidden" name="token" value="<?php echo($response->token); ?>"/> 
    <input type="submit" value="go" /> 

</form> 
</php> 
+0

你有'var f = document.getElementsByID('file');' – Jeff

+0

@Jeff错字是什么?我没看到它。 –

+0

'getElementSByiD'需要单数(因为id是唯一的),D必须是小写。 – Jeff

回答

0

你可以先获取该文件扩展名,然后你需要做什么用:

var patt1 = /\.[0-9a-z]+$/i; 
var fileName = "file.zip"; 
var theReturn = fileName.match(patt1); 
alert(theReturn); //returns .zip 

所以,在你的代码,你会需要将您的switch声明切换为以下内容:

function isVideo(fileName) 
{ 
    var patt1 = /\.[0-9a-z]+$/i; 
    var fileName = "file.zip"; 
    var theReturn = fileName.match(patt1); 

    switch (theReturn.toLowerCase()) 
    { 
     case '.mp4': return true; //make sure it's .mp4 instead of just mp4 
    } 
    retrun false 
} 

编辑

实例获取文件名和上传文件的扩展名FileUpload控件:

HTML

<!DOCTYPE Html /> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <input id="File1" type="file" /> 
     <input type="button" id="btnGetExt" value="Get File Extension"/> 
     <script type="text/javascript" src="theJS.js"></script> 
    </body> 
</html> 

的JavaScript

btnGetExt.onclick = function() { 
    var patt1 = /\.[0-9a-z]+$/i; 
    var fileName = document.getElementById('File1').value; 
    alert(fileName); 
    var theReturn = fileName.match(patt1); 
    alert(theReturn); 
} 
+0

该文件是在PHP给我的我相信这就是为什么我必须使用它来找到它:'document.getElementsByID('file')' –

+0

'文件'是什么类型的元素 – mwilson

+0

我已经在上面添加了它,请看看PHP代码。 –