我正在研究一个问题很长时间,但仍然找不到任何解决方案。
我正在使用代码点火器上传mp4文件。在此之前,我在config/mimes.php中添加了mp4的mime类型。我都试过了: mp4 => video/mp4
和 mp4 => array('video/mp4', 'video/3gpp')
这两种方法在本地服务器中都很完美,但是每当我在实时服务器上对其进行测试时,它总是会给出相同的错误消息"您尝试上传的文件类型是不允许的。
我又尝试了一件事。 $config['allowed_types'] = "*";
它在本地和在线服务器中都完美运行。
但我只想要mp4视频类型。
有人对这个奇怪的问题有一些解决方案吗?
终于我得到了我的问题的解决方案,所以我正在写这个答案。
大多数情况下,本地和在线服务器中对 MIME 类型的检测是不同的。
就我而言,本地服务器被file_type为"视频/mp4"。但是在线服务器将 MIME 类型检测为"应用程序/八位字节流"。
所以我在我的配置文件夹的 mime 类型列表中添加了两者:
'mp4' => array('video/mp4', 'application/octet-stream'),
现在它在本地和在线服务器中都能完美运行。
如果一切都不起作用,请像这样重新排列允许的类型顺序,将视频格式放在第一位:
$config['allowed_types'] = 'mp4|jpg|png|'
它适用于我的情况。
当我们上传扩展名为 mp4 的视频时,我依赖于视频哑剧文件类型,但在 CodeIgniter 上传库中使用 php 函数finfo_file通过此功能检测file_type,我们得到了其他file_type。我得到视频/3gpp
所以我改变了配置/哑剧.php
'mp4' => array('video/mp4', 'video/3gpp'),
它对我有用。
谢谢