codeigniterとswfuploadを統合させる最善の解決策


codeigniterは軽量で便利なMVCフレームです。最近のプロジェクトは大量アップロードに関連しています。そこで、swfuploadというプラグインを使っています。ネット上にciとswfuploadに関する書き込みがたくさんありますが、完全ではないです。ここでは各長所を総合して、自分の実際の経験を通して整理しました。
問題1:ファイルタイプが取得できませんか?
答え:SWFUPLOADのすべてのタイプのファイルのMIMEはすべてappication/octet streamなので、Codeigniterが持っているアップロードクラスを使って正確に画像かどうかを得ることができません。ci公式のwikiによってすでに解答が与えられました。
In your view file,include the SWFUpload javascript file:
 
In your controller, pass “Filedata” as the name value for the do_upload function:
$this->upload->do_upload('Filedata')
In your mimes.php file, add ‘application/octet-stream' for all allowed image formats
'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'),
'jpe'    =>    array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'png'    =>    array('image/png',  'image/x-png', 'application/octet-stream'),
2:session のバックグラウンドがあり、アップロード にログインを することになります。
:
な :swfuplodはアップロードする 、 しいプロセスができます。 のプロセスと しないので、この を するためには、sessionを する があります。ID、そしてログインページで します。id、じゃ session_を います。id($u)POST['PHP_SESSIONID')を してください。アップロードページのJSでは、 のSESSION_を できます。IDのです。
ci の : には、uploadiflyなどのswfuploadはflashクライアントを しているので、それらが するuseragentは、ブラウザを するユーザのuser-agentとは に っている。したがって、ユーザがあなたのシステムにログインしてセッションを しましたが、アップロードプログラムを すると のセッションが します。
したがって、sessionがなくなったのではなく、ファイルをアップロードする 、CIはuploadifyのために のsessionを しました。
1: $config['sess_]matchuseragent'はFALSEに され、やり します。
2( ):セキュリティのために、 1のソリューションを することを しないで、 の を して、 えばアップロードするたびに、urlにtokenを してサーバ のtokenと する( えば、このtokenはユーザ のhash とすることができる)。 な はstblogのアップロード を に してください。この を してみましたが、もしあなたのsession がautloadにおいて にローディングされていたら、それは に いないです。 は しいクラス、 えばMY_です。ControllerはCI_に き がれます。Controllerは、バックグラウンド のために、バックグラウンド を する が です。Controllerはこのようにすれば、session の を ずにアップロードするのはもちろん されますが、post(u)を ってもいいです。params を する:
class Upload extends CI_Controller {
//*******
//*****
}
//~~~~~~~~~~~~~~~~~
class client_photo extends MY_Controller {
    function __construct() {
        parent::__construct();
    }
 function index() {
}
}
//~~~~~~~~~~~~~~~~~~~~~
class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('session');
}
}