File upload 模拟、八位字节流和上传
我正在使用和创建文件上传程序。用户只能上载几种类型的文件 Kohana内置了大量MIME类型库。我认为检查上传文件的MIME类型(来自Uploadify)是否匹配设置的文件扩展名会很酷。这就是为什么我创建了一个允许MIME类型的数组File upload 模拟、八位字节流和上传,file-upload,kohana,mime,uploadify,file-type,File Upload,Kohana,Mime,Uploadify,File Type,我正在使用和创建文件上传程序。用户只能上载几种类型的文件 Kohana内置了大量MIME类型库。我认为检查上传文件的MIME类型(来自Uploadify)是否匹配设置的文件扩展名会很酷。这就是为什么我创建了一个允许MIME类型的数组 $mimes = (array) Kohana::config('mimes'); $allowed_mimes = array_merge($mimes['bmp'], $mimes['gif'], $mimes['jpg'], $mimes['j
$mimes = (array) Kohana::config('mimes');
$allowed_mimes = array_merge($mimes['bmp'], $mimes['gif'], $mimes['jpg'], $mimes['jpeg'], $mimes['png']);
接下来,我想检查上传的文件MIME类型是否在$allowed\u mimes
数组中。我在数组($file['type'],$allowed\u mimes)中使用了类似于的东西。
。令我惊讶的是,文件的实际MIME是应用程序/octet流
。无论如何,上传的文件是JPEG
image。这怎么可能
基本思想是我需要检查文件类型。最好的方法是什么
编辑:
在和同事们进行了一些转换之后,我决定在最后一点后检查字符。类似于virus.jpeg
是可以接受的,因为jpeg
在其名称中。我仍然对更好的解决方案持开放态度
$extension=ltrim(strrchr($file['name'],'.'),'..'))
PHP可以使用和(已从PHP5.3.0中删除)来确定文件的MIME类型(Kohanas也可以使用file::MIME()
方法)
如果这两种方法都不可用,此方法将尝试使用文件扩展名查找MIME类型,这可能非常不可靠
由于您只是尝试验证一些上传,我建议使用upload
方法来验证它:
$validation = Validation::factory($_FILES)
->rule('Filedata', 'Upload::not_empty')
->rule('Filedata', 'Upload::valid')
->rule('Filedata', 'Upload::size', array(':value', '4M'))
->rule('Filedata', 'Upload::type', array(':value', array('bmp','jpg','jpeg','png')))
->rule('Filedata', 'Upload::image', array(':value', 1920, 1080));
请注意,Upload::image()。这是我个人在一些Uploadify上传中使用的验证,因此应该可以正常工作。PHP可以使用and(已从PHP5.3.0中删除)来确定文件的MIME类型(Kohanas的File::MIME()
方法也是如此)
如果这两种方法都不可用,此方法将尝试使用文件扩展名查找MIME类型,这可能非常不可靠
由于您只是尝试验证一些上传,我建议使用upload
方法来验证它:
$validation = Validation::factory($_FILES)
->rule('Filedata', 'Upload::not_empty')
->rule('Filedata', 'Upload::valid')
->rule('Filedata', 'Upload::size', array(':value', '4M'))
->rule('Filedata', 'Upload::type', array(':value', array('bmp','jpg','jpeg','png')))
->rule('Filedata', 'Upload::image', array(':value', 1920, 1080));
请注意,Upload::image()。这是我个人在一些Uploadify上传中使用的验证,所以它应该可以正常工作。$ext=pathinfo($filename,pathinfo\u扩展名)代码>将是获得扩展名的正确方法(我无法理解原始问题?)问题是:如何检查文件类型?默剧可以这样做吗?什么是应用程序/octet流
,我是如何用JPEG
获得它的?我的解决方案(请参见编辑)可以吗?$ext=pathinfo($filename,pathinfo\u扩展名)代码>将是获得扩展名的正确方法(我无法理解原始问题?)问题是:如何检查文件类型?默剧可以这样做吗?什么是应用程序/octet流
,我是如何用JPEG
获得它的?我的解决方案(请参见编辑)可以吗?