【发布时间】:2011-10-14 07:45:24
【问题描述】:
我正在使用Uploadify 和Kohana,我正在创建文件上传器。用户只能上传几种类型的文件。
Kohana 内置了很棒的 MIME 类型库。我认为检查上传文件的 MIME 类型(来自 Uploadify)是否匹配设置的文件扩展名会很酷。这就是为什么我制作了一组允许的 MIME 类型。
$mimes = (array) Kohana::config('mimes');
$allowed_mimes = array_merge($mimes['bmp'], $mimes['gif'], $mimes['jpg'], $mimes['jpeg'], $mimes['png']);
接下来,我想检查上传文件的 MIME 类型是否在 $allowed_mimes 数组中。我用了in_array($file['type'], $allowed_mimes)之类的东西。令我惊讶的是 - 文件的实际 MIME 是application/octet-stream。无论如何,上传的文件是JPEG 图像。这怎么可能?
基本想法是我需要检查文件类型。最好的方法是什么?
编辑:
在与同事进行一些转换后,我决定检查最后一个点后的字符。喜欢virus.jpeg 是可以接受的,因为jpeg 在它的名字中。我仍然愿意寻求更好的解决方案!
$extension = ltrim(strrchr($file['name'], '.'), '.')
【问题讨论】:
-
$ext = pathinfo($filename, PATHINFO_EXTENSION);将是获取扩展名的正确方法(我无法理解原始问题?) -
问题是:如何检查文件类型? MIME 可以吗?
application/octet-stream到底是什么?我是如何得到JPEG的?我的解决方案(见编辑)好吗?
标签: file-upload kohana mime uploadify file-type