是否有人曾將CakePHP Media Plugin與SWFUpload或任何Flash/ajax上傳器一起使用?我無法在任何地方找到任何文檔或代碼示例。CakePHP媒體插件和SWFUpload
任何想法/建議是最受歡迎的。
感謝,
平方公尺Ë
是否有人曾將CakePHP Media Plugin與SWFUpload或任何Flash/ajax上傳器一起使用?我無法在任何地方找到任何文檔或代碼示例。CakePHP媒體插件和SWFUpload
任何想法/建議是最受歡迎的。
感謝,
平方公尺Ë
我已經成功地完成一起使用CakePHP 1.3,Uploadify(http://www.uploadify.com/)和Miles Johnson的上傳插件(HTTP幾行內容: //www.milesj.me/resources/script/uploader-plugin)。
讓一切正常工作花費了一些手腳,您需要仔細閱讀每個涉及的部分的文檔,使所有內容按您需要的方式工作,但這是我管理的方式它:
在您的視圖中: 包括必需的Javascript庫:jQuery,SWFObject和Uploadify。 插入將Uploadify腳本替換爲Flash上傳器的<input>
元素。 然後插入用於指定Uploadify設置的jQuery代碼(詳情請參見Uploadify文檔)。 將Uploadify的URL設置爲發佈時,請確保將會話ID包含爲參數之一。在我的例子中,我將它作爲第一個參數傳遞(請參閱下面的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');
}
}
這就是它的本質。
但是有幾個問題。
我將會話ID傳遞給控制器,並使用該ID啓動一個新會話,因爲Uploadify對URL的帖子可以看作是來自不同的用戶代理,這可能會導致錯誤。您可以通過將瀏覽器的會話標識傳遞給上傳操作並使用beforeFilter中的該標識開始一個新的會話,如上所示。
此外,Uploader組件還內置了mimetype驗證。但是,無論原始文件的MIME類型如何,Uploadify提供的Flash上傳器都會向每個文件發送某種「文件上傳式」MIME類型。我通過直接在Uploader插件的代碼中禁用驗證來解決這個問題。這意味着如果你想驗證上傳文件的mimetypes,你必須在其他地方添加它。
對不起,這是如此模糊,但我不久前做了這個,我不記得所有的細節。不過,我希望這有助於您指出正確的方向。
我發現本教程,它工作得很好。
http://pixelcone.com/tutorial/ajax-file-upload-using-jquery-and-cakephp-media-plugin/
Cakephp Media插件真的是一個傑作。希望穩定版即將發佈。