CakePHP Media Plugin и SWFUpload - PullRequest
0 голосов
/ 28 января 2011


Кто-нибудь когда-либо использовал CakePHP Media Plugin в сочетании с SWFUpload или какими-либо загрузчиками flash / ajax? Я нигде не могу найти документацию или примеры кода.

Любые идеи / предложения приветствуются.

Спасибо
м ^ е

Ответы [ 2 ]

0 голосов
/ 06 февраля 2011

Я нашел этот урок, и он отлично работает.
http://pixelcone.com/tutorial/ajax-file-upload-using-jquery-and-cakephp-media-plugin/
Плагин Cakephp Media действительно шедевр.Надеется, что стабильная версия будет выпущена в ближайшее время.

0 голосов
/ 28 января 2011

Мне удалось что-то сделать в этом направлении, используя CakePHP 1.3, Uploadify (http://www.uploadify.com/) и плагин Miles Johnson's Uploader (http://www.milesj.me/resources/script/uploader-plugin).

). Чтобы заставить все работать правильно, потребовалось немало усилий.Я хочу прочитать документацию по каждой из частей, чтобы все работало так, как вам нужно, но вот как мне это удалось:

По вашему мнению: Включите необходимые библиотеки Javascript: jQuery,SWFObject и Uploadify. Вставьте элемент <input>, который сценарий Uploadify заменит на загрузчик Flash. Затем вставьте код jQuery для указания параметров Uploadify (подробности в документах Uploadify). При установке URL-адреса для Uploadify для публикации в,обязательно укажите идентификатор сеанса в качестве одного из аргументов. В моем примере я передал его в качестве первого аргумента (см. ниже раздел «Контроллер beforeFilter», чтобы узнать, что с ним делать).

В вашем контроллере: Включитькомпонент Uploader плагина Uploader. Добавьте что-то вроде этого в 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-адрес может рассматриваться как исходящая от другого пользовательского агента, что может привести к ошибкам.Вы можете обойти это, передав идентификатор сеанса браузера в действие загрузки и начав новый сеанс с этим идентификатором в beforeFilter, как показано выше.

Кроме того, компонент Uploader имеет встроенную проверку mimetype.Тем не менее, загрузчик Flash, который предоставляет Uploadify, отправляет каждый файл с каким-либо mimetype «file-uploaded-by-flash» независимо от типа mime-типа исходного файла.Я справился с этим, отключив проверку прямо в коде плагина Uploader.Это означает, что если вы хотите проверить mimetypes загруженных файлов, вам придется добавить его в другом месте.

Извините, что это так расплывчато, но я сделал это некоторое время назад, и я не помню,все детали.Тем не менее, я надеюсь, что это поможет вам в правильном направлении.

...