2011-01-28 12 views
0


SWFUploadやFlash/Ajax Uploadersと一緒にCakePHP Media Pluginを使用したことがありますか?私はこの文書のどこにでもドキュメンテーションやコードサンプルを見つけることができません。CakePHP Media PluginとSWFUpload

ご意見やご提案は大歓迎です。私は、CakePHP 1.3、Uploadify(http://www.uploadify.com/)とマイルズ・ジョンソンのアップローダプラグイン(HTTPを使用して、これらの線に沿って何かを成し遂げることができた

答えて

0

おかげで、
メートル^ E: //www.milesj.me/resources/script/uploader-plugin)。

すべてが正しく動作するようにするためにはちょっとした手間がかかっていました。必要な方法ですべてを動作させるために、関連する各部分のドキュメントを読みたいと思いますが、それ:

あなたのビューで: 必要なJavascriptのlibs:jQuery、SWFObject、およびUploadifyを含めます。 アップロードスクリプトがFlashアップローダに置き換わる要素<input>を挿入します。 次に、Uploadify設定を指定するためのjQueryコードを挿入します(Uploadifyドキュメントの詳細)。 UploadifyのURLを送信先に設定するときは、セッションIDを引数の1つとして指定してください。私の例では、これを最初の引数として渡しました(Controller beforeFilterを参照してください)。

コントローラ内: アップローダプラグインのアップローダコンポーネントを含めます。 はのbeforeFilterに、このようなものを追加します。

function beforeFilter() { 
    if ($this->action == 'upload') { 
     $this->Session->id($this->params['pass'][0]); 
     $this->Session->start(); 
    } 
    parent::beforeFilter(); 
} 

アップロードを行うためのアクションを作成します。私のものは次のようになります。

function upload(){ 
    Configure::write('debug', 0); 
    $this->autoRender = false; 
     if (isset($this->params['form']['Filedata'])) { 
    $this->data['Upload'] = $this->params['form']; 
    $data = $this->Uploader->upload('Filedata'); 
    } 
} 

これはその本質です。

しかし、いくつかの落とし穴があります。

UploadifyのURLへの投稿は、別のユーザーエージェントからのものとみなされる可能性があり、エラーが発生する可能性があるため、セッションIDをコントローラに渡してそのIDで新しいセッションを開始します。上記のように、ブラウザのセッションIDをアップロードアクションに渡し、そのIDを持つ新しいセッションをbeforeFilterで開始することで、この問題を回避できます。

また、Uploaderコンポーネントには、組み込みのMIMEタイプ検証があります。しかし、Uploadifyが提供するFlashアップローダは、元のファイルのMIMEタイプに関係なく、何らかの「ファイルアップロードされたフラッシュ」のMIMEタイプを持つすべてのファイルを送信します。アップローダプラグインのコードで直接検証を無効にすることでこの問題を回避しました。つまり、アップロードしたファイルのMIMEタイプを検証する場合は、別の場所に追加する必要があります。

申し訳ありませんが、これはあまりにも曖昧ですが、私はこれを少し前に行いましたが、すべての詳細を覚えていません。しかし、正しい方向に向けるのに役立つことを願っています。

関連する問題