首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 整合 SWFUpload 最佳實踐:解決 MIME 識別與 Session 失效

     編輯:PHP 相關知識

CI + SWFUpload 批量上傳常見兩大坑及解決方案:

問題 1:文件類型識別失敗

SWFUpload 所有文件 MIME 均為 application/octet-stream,導致 CI 上傳類驗證失效。

解決:在 config/mimes.php 為允許的圖片格式追加 application/octet-stream:

'gif'  => array('image/gif', 'application/octet-stream'),
'jpeg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpg'  => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'png'  => array('image/png', 'image/x-png', 'application/octet-stream'),

控制器調用 $this->upload->do_upload('Filedata')(SWFUpload 默認字段名)。

問題 2:後台 Session 驗證導致上傳掉登錄

Flash 觸發請求 User-Agent 不同,CI 開啟 sess_match_useragent 時會創建新 Session。

方案一(簡易):$config['sess_match_useragent'] = FALSE;(降低安全性)

方案二(推薦):分離上傳控制器繼承關係,避開 Session 自動加載:

class Upload extends CI_Controller { ... } // 不自動加載 session
class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('session'); // 只有後台控制器繼承此類才加載
    }
}
class Admin_Controller extends MY_Controller { ... } // 後台頁面用此

上傳驗證改用 post_params 傳 Token 比對(如用戶名 Hash)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved