Php 有没有一种更快的方法可以在客户端和服务器端查找所有图像、音频和视频文件类型

Php 有没有一种更快的方法可以在客户端和服务器端查找所有图像、音频和视频文件类型,php,javascript,Php,Javascript,下面我有3个javascript函数,用于检查其文件的合法文件扩展名。问题是,如果我按照我实现它的方式来做,那么每个函数都会有一个非常大的case语句,说明哪些文件扩展名是合法使用的。所以我的问题是除了做 `case:jpeg: case:jpg: case:png` 等等。是否有一种快速创建案例陈述的方法,用于检查所有合法的图像文件扩展名类型、所有合法的视频文件扩展名类型和所有合法的音频文件扩展名类型 下面是我目前用于验证图像、视频和音频文件扩展名类型的3个javascript函数: 图片

下面我有3个javascript函数,用于检查其文件的合法文件扩展名。问题是,如果我按照我实现它的方式来做,那么每个函数都会有一个非常大的case语句,说明哪些文件扩展名是合法使用的。所以我的问题是除了做

`case:jpeg: 
case:jpg:
case:png`
等等。是否有一种快速创建案例陈述的方法,用于检查所有合法的图像文件扩展名类型、所有合法的视频文件扩展名类型和所有合法的音频文件扩展名类型

下面是我目前用于验证图像、视频和音频文件扩展名类型的3个javascript函数:

图片:

   function imageValidation(imageuploadform) {

        var val = $(imageuploadform).find(".fileImage").val();
        switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
            case 'gif':
            case 'jpg': 
            case 'jpeg':
            case 'pjpeg':
            case 'png':
                 return true;

            case '':
                $(imageuploadform).find(".fileImage").val();
                alert("To upload an image, please select an Image File");
                return false;

            default:
                alert("To upload an image, please select a valild file extension.");
                return false;

        }

        return false;

}
视频:

function videoValidation(videouploadform) {

    var val = $(videouploadform).find(".fileVideo").val();
    switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
        case 'mpg':
        case 'mov': 
        case 'wmv':
        case 'rm':
        case '3g2':
        case '3gp':
        case 'm2v':
        case 'm4v':
             return true;

        case '':
            $(videouploadform).find(".fileVideo").val();
            alert("To upload an video, please select an Video File");
            return false;

        default:
            alert("To upload an video, please select a valild file extension.");
            return false;

    }

    return false;

}
音频:

  function audioValidation(audiouploadform) {

        var val = $(audiouploadform).find(".fileAudio").val();
        switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
            case 'wav':
            case 'aif': 
            case 'mp3':
            case 'mid':
                 return true;

            case '':
                $(audiouploadform).find(".fileAudio").val();
                alert("To upload an audio, please select an Audio File");
                return false;

            default:
                alert("To upload an audio, please select a valild file extension.");
                return false;

        }

        return false;


}

还有谁知道php在检查所有图像文件类型、视频文件类型和音频文件类型方面的等效功能是什么,因为我还需要对文件类型进行服务器端验证。我只是想知道是否有比列出所有可能的图像、视频和音频文件类型更快的方法。

永远不要相信文件扩展名。在服务器上,您应该检查文件的MIME类型。任何人都可以更改分机MIME类型是使用文件签名确定的,并且更加准确。文本文件将是
Text/plain
,等等。@MitchDempsey甚至MIME类型都不可信,尤其是对于某些文件,但我确实同意您最初的断言,即扩展不可信。好吧,如果我对图像、视频和音频使用MIME,如何在上面的代码中实现这一点?例如,如何在上面的图像验证函数中使用图像类型MIME?在客户端,可能最容易检查扩展名。但是,一旦它到达服务器,您应该使用MIME类型进行验证。但这是否意味着对于var regex,在检查文件扩展名之前,我需要存储20-30种不同的文件类型?这与使用case相同,但代码要少得多,并且您不需要使用多个javascript函数多次解析字符串。还有MIME(多用途Internet邮件扩展),它只是告诉正在传输的数据类型。同样根据您的示例,它将是17个不同的文件扩展名。因此,是否没有更简短的方法来实际编写代码以检查图像、音频和视频的所有文件类型?此javascript函数比最初的3个其他函数短得多。只需在需要的每个位置重用相同的函数,并在每个位置重新定义AcceptableFileNamesRegex参数。节省40多行我的意思是,我是否必须单独键入每个文件扩展名,例如,是否没有快捷方式检查所有图像文件扩展名类型。我必须写/jpg/jpeg/tiff/png/gif等吗
function checkFileExtension(AcceptableFileNamesRegex, fileName){
  var pattern = AcceptableFileNamesRegex;
  return pattern.test(fileName);
}

var regex = /wav|aif|mp3|mid/

checkFileExtension(regex, "myWav.wav")