CodeIgniter:解决“不允许的文件类型”上传问题
在此 CodeIgniter 上传场景中,用户会遇到错误,指示尝试上传的不允许的文件类型。尽管在控制器中指定了允许的文件类型,但某些文件格式(例如 WMV 视频)仍无法上传。
在上传过程中,CodeIgniter 会尝试确定文件的 MIME 类型。但是,在某些情况下,Firefox 或其他浏览器可能会错误地将文件扩展名解释为 MIME 类型。当配置中无法识别 MIME 类型时,这可能会导致“文件类型不允许”错误。
要解决此问题,我们可以通过添加以下行来检查为上传文件检测到的 MIME 类型控制器的 upload() 方法:
<code class="php">$this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();</code>
上传 WMV 文件后,会显示检测到的 MIME 类型。例如,它可能显示 application/octet-stream,它不包含在允许的 MIME 类型配置中。
要解决此问题,请将检测到的 MIME 类型添加到 mimes.php 配置文件中:
<code class="php">'wmv' => array('video/x-ms-wmv', 'audio/x-ms-wmv', 'application/octet-stream')</code>
通过在配置中添加正确的 MIME 类型,CodeIgniter 将识别 WMV 文件类型并允许其上传。
请注意浏览器或计算机配置可能会影响上传行为。例如,在某些系统上,只有 AVI 上传可能会成功,而在其他系统上,则可以上传所有支持的文件。这表明问题也可能是特定于浏览器或系统的。
如果 MIME 类型解析方法无法解决上传问题,请参阅以下资源进行进一步故障排除:
以上是为什么即使我指定了允许的文件类型,CodeIgniter 仍拒绝我的 WMV 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!