获取文件的扩展名但无法获取文件名

Get the extension of a file but can't get the filename

我正在尝试检查文件的扩展名是否有效。问题是当我给文件一个随机扩展名时 .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>

您可以先获取文件扩展名,然后用它做您需要做的事情:

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);
}