2015-05-17 269 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代碼。 –