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中文網其他相關文章!