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