首页 > 解决方案 > 从其内容中了解文件是图像还是视频

问题描述

我找不到一种方法来了解文件是否真的是视频或图像。例如:我有一个重命名为 .mp4 的 .jpg 图像,如果我通过计算机或浏览器打开它,我什么也看不到,因为它不是真正的视频。我正在寻找一种方法来了解超出所需扩展名的视频/图像是否也是视频或图像,具体取决于请求。理论上我想要一个类似的结果:

$ImageOrVideo = pathinfo($_FILES["file"]["tmp_name"],PATHINFO_EXTENSION);
switch($ImageOrVideo){
    case 'jpg': //check if a real image
    case 'mp4': // check if a real video
    default: exit('stop');
}

我曾想过一些解决方案,例如过去我用于图像 getimagesize(),但现在 php 文档说:

注意 此函数要求文件名是有效的图像文件。如果提供了非图像文件,它可能会被错误地检测为图像并且函数将成功返回,但数组可能包含无意义的值。

不要使用 getimagesize() 来检查给定文件是否为有效图像。请改用专门构建的解决方案,例如 Fileinfo 扩展。

标签: phpfile-upload

解决方案


$ImageOrVideo = $_FILES["file"]["tmp_name"];
switch(mime_content_type($ImageOrVideo)){ 
        case 'image/jpeg':
             // ........
             break;
        case 'video/mp4':
             // ........
             break;
        default:
             exit('stop');
 }

推荐阅读