2009-08-17 4 views
3

Я занимаюсь этим некоторое время и не могу понять. В основном у меня есть страница добавления для моей модели, которую вы можете добавить карту из URL-адреса или из загрузки файла. У меня есть все поля и проверка, но как и где я могу управлять загруженным файлом? Должен быть какой-то простой способ сделать это. Благодаря!Как сделать загрузку файлов на основе форм в CakePHP?

ответ

19

Во-первых, ваша форма должна быть настроена для разрешения загрузки файлов.

<?php echo $form->create(Model, array('type' => 'file')); ?> 

Это позволит любой файл входы на самом деле загрузить файл на сервер с $form->file(field) или $form->input(field, array('type' => 'file')).

После того, как файл был загружен, вы должны обрабатывать все остальное внутри Model:

function beforeSave($created) { 
    extract($this->data[Model][field]); 
    if ($size && !$error) { 
     move_uploaded_file($tmp_name, destination); 
     $this->data[Model][field] = destination; 
    } 
    return true; 
} 

Это только основы, так что будьте уверены, чтобы иметь игру, чтобы найти решение, которое наилучшим образом соответствует вашим потребностям ,

+0

, что имя функции должно читать «move_uploaded_file» :) – inkedmn

+0

Ах спасибо, это было обновлено. Текстовое поле не проверяет мой синтаксис. ;) –

+0

Вот как я сделал функцию move_uploaded_file: move_uploaded_file ($ _ FILES ['data'] ['tmp_name'] ['Item'] ['ipath'], "$ destination /".$_ FILES ['data'] [ 'имя'] [ 'Item'] [ 'IPath']); –

0

ПРИМЕЧАНИЕ: MeioUploadBehavior устарел. Вместо этого jrbasso предлагает Upload Plugin.

В дополнение к лучшим ответам, которые уже заданы, я хочу рассказать о MeioUploadBehavior, в настоящее время поддерживается jrbasso at github, что очень помогло мне в моем собственном проекте CakePHP.

Вы просто добавляете поведение в свою модель с помощью поля $actsAs и в то же время указываете любые пользовательские настройки. Затем создайте необходимые поля (описываемые подробными документами) в своей базе данных или настройте модель, чтобы не использовать таблицу базы данных. Наконец, настройте форму на странице добавления, также описанную в прилагаемой документации. После этого поведение позаботится обо всем остальном.

0

Вы можете использовать компоненты Zend для обработки загрузки файла. На моем сайте есть хороший пример: CakePHP file upload using Zend Components

+0

Hello Geo. Я сделал комментарий к вашей статье в блоге. Пожалуйста, укажите версию CakePHP, которую вы использовали в своем примере. Благодарю. –

Смежные вопросы