php - 从其内容中了解文件是图像还是视频
问题描述
我找不到一种方法来了解文件是否真的是视频或图像。例如:我有一个重命名为 .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 扩展。
解决方案
$ImageOrVideo = $_FILES["file"]["tmp_name"];
switch(mime_content_type($ImageOrVideo)){
case 'image/jpeg':
// ........
break;
case 'video/mp4':
// ........
break;
default:
exit('stop');
}
推荐阅读
- python - 数字列表之间的 Levenshtein 距离
- vba - VBA 中的时间循环 - 遍历列
- c# - .NET ReactiveExtensions:使用具有可变时间跨度的 Sample()
- javascript - php中的变量到javascript中的变量
- java - Java Spring App在Tomcat + Apache2上重定向错误的URL
- laravel - botman 中的默认消息
- android - 尝试在 React Native 中捆绑 APK 时出错 - 无法读取未定义的属性“更新”
- python-3.x - 如何按顺序从 CSV 文件中获取数据?
- java - 二叉树级序遍历调试
- selenium - Appium 无法使用 XPath 找到 UI 元素