загрузка файла в cakephp - PullRequest
       1

загрузка файла в cakephp

1 голос
/ 12 октября 2010

Как я могу загрузить файл с помощью cakephp?Есть ли какая-либо поддержка фреймворка для загрузки файлов или я должен написать собственный код для этого?

Ответы [ 4 ]

5 голосов
/ 12 октября 2010

Редактировать (2015): Пожалуйста, смотрите список Awesome CakePHP для текущих файловых плагинов (ветка 2.x здесь )


Оригинальный ответ:

Плагины для загрузки CakePHP в активной разработке (по состоянию на октябрь 2010 года):

Вы также можете использовать Класс файла , но я бы не стал изобретать колесо на этом.

1 голос
/ 12 октября 2010

возможны оба варианта

для начинающих, возможно, это лучший выбор: http://www.milesj.me/resources/script/uploader-plugin

0 голосов
/ 17 июля 2012

Чтобы начать, попробуйте это.

Я потратил два дня на поиск простого способа загрузки файлов, я перепробовал множество методов и не смог заставить их работать.Это работает.Это не безопасно, это супер просто.Для меня это сейчас трамплин.Я бы использовал это, чтобы понять процессы.Тогда вы можете создать его по сложности.

Для меня я изо всех сил пытался сохранить $this->data - но, разумеется, это не похоже на учебник блога cakePHP.Требуемые данные (вся информация о файле) находятся на несколько уровней ниже во вложенных массивах, поэтому $this->data['Doc']['files'] - это то, что вам нужно.

SQL

CREATE TABLE IF NOT EXISTS `docs` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(300) NOT NULL,
    `type` varchar(300) NOT NULL,
    `tmp_name` varchar(300) NOT NULL,
    `error` tinyint(1) NOT NULL,
    `size` varchar(100) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

МОДЕЛЬ

<?php
    class Doc extends AppModel {
    }
?>

ПРОСМОТР

<h1>Uploads</h1>
<table>
    <tr>
        <th>ID</th><th>File Name</th><th>Size</th>
    </tr>
<?php foreach($files as $file): ?>
    <tr>
        <td><?php echo $file['Doc']['id'];?></td>
        <td><?php echo $this->Html->link($file['Doc']['name'],array('controller' => 'files','action'=>'uploads',$file['Doc']['name']));?></td>
        <td><?php echo number_format($file['Doc']['size']/1023,0).' KB';?></td>
    </tr>
<?php endforeach;?>
</table>

<h1>Add a File</h1>
<?php 
echo $this->Form->create('Doc',array('type'=>'file'));
echo $this->Form->file('File');
echo $this->Form->submit('Upload');
echo $this->Form->end();
?>

КОНТРОЛЛЕР

<?php
class DocsController extends AppController
{
    public $helpers = array('Html','Form','Session');
    public function index()
    {
        // -- list the files -- //
        $this->set('files',$this->Doc->find('all'));
        // -- Check for error -> Upload file to folder -> Add line to database -- //
        if($this->request->is('post')) 
        {
            if($this->data['Doc']['File']['error']=='0')
            {   
                if(file_exists('files/uploads/' . $this->data['Doc']['File']['name']))
                {
                    $this->Session->setFlash('A file called ' .$this->data['Doc']['File']['name']. ' already exists');
                } else {
                    move_uploaded_file($this->data['Doc']['File']['tmp_name'], 'files/uploads/' . $this->data['Doc']['File']['name']);
                }
                $this->Doc->save($this->data['Doc']['File']);
                $this->redirect(array('action'=>'index'));
            }
        }
    }
}
?>
0 голосов
/ 12 октября 2010

Этот компонент может вам помочь: http://cakeforge.org/snippet/detail.php?type=snippet&id=36. Позволяет загружать данные в базу данных или каталог с использованием FTP.У меня есть некоторый опыт работы с CakePHP, однако я еще не пробовал этот компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...