2011-01-28 2 views
0


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

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

Спасибо,
м^е

ответ

0

мне удалось сделать что-то вдоль этих линий с помощью CakePHP 1.3, Uploadify (http://www.uploadify.com/) и Uploader плагин Майлса Джонсона (HTTP: //www.milesj.me/resources/script/uploader-plugin).

Для того, чтобы все правильно работало, вам нужно было прочитать документацию по каждой части, чтобы получить все, чтобы работать так, как вам нужно, но так я справлялся it:

На ваш взгляд: Включите необходимые библиотеки Javascript: jQuery, SWFObject и Uploadify. Вставьте элемент <input>, который скрипт Uploadify заменит загрузчиком Flash. Затем вставьте код jQuery для указания параметров Uploadify (подробности в документах Uploadify). При настройке URL-адреса для Uploadify для публикации необходимо указать идентификатор сеанса как один из аргументов. В моем примере я передал это как первый аргумент (см. Ниже Controller 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-адресе можно увидеть как исходящее от другого User Agent, и это может привести к ошибкам. Вы можете обойти это, передав идентификатор сеанса браузера в действие загрузки и запустив новый сеанс с этим идентификатором в файле beforeFilter, как показано выше.

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

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