Bien, lo que pasa es que tu subida de imágenes que tenias es para
subir múltiples archivos... no estoy viendo la logica para subir los
archivos, tal vez esta en un plugin o component, pero igual te paso una
manera pero para subir un único archivo:

view/Presses/admin_add.ctp

<div class="presses form">
<?php echo $this->Form->create('Presse', array('type'=>'file', 'url' =>
'/admin/presses/add));?>
<h2><?php __('Admin Add Press'); ?></h2>
<fieldset>
        <div class="tabs">
            <ul>
                <li><a href="#Suit-main"><span><?php __('General');
?></span></a></li>
                <li><a href="#Suit-meta"><span><?php __('Meta');
?></span></a></li>
                <li><a href="#Suit-image"><span><?php __('Images');
?></span></a></li>
            </ul>
            <div id="Suit-main">
        <?php
echo $this->Form->input('title'); //No tengo idea para que sirbe
echo $this->Form->input('status'); //No tengo idea para que sirbe
 ?>
            </div>
            <div id="Suit-meta">
            <?php
 echo $this->Form->input('foreign_key'); //Desconozco como es la relación
para esta clave foranea
echo $this->Form->input('owner'); //Debe ser el propietario, lo podes
modificar desde el metodo admin_add del controlador de acuerdo a la
veriable de session $this->data['Presse']['owner'] = 'fulano';
 echo $this->Form->input('title');
echo $this->Form->input('epigraph');
            ?>
            </div>
        </div>
</fieldset>
    <div class="buttons">

    <?php  echo $this->Form->end(__('Save', true)); ?>

PressesController.php

<?php
class PressesController extends AppController {
var $name = 'Presses';
 function beforeFilter(){
parent::beforeFilter();
// CSRF Protection
        if (in_array($this->params['action'], array('admin_add',
'admin_edit'))) {
            $this->Security->validatePost = false;
        }
}

public function index(){
$this->set('bodyClass', 'accomodation accomodation-detail');
 $press = $this->Press->find('first', array(
'contain' => array(
 'Photo',
'File'
),
 'conditions'=> array(
'Press.slug' => $this->params['slug'],
 'Press.status' => true
),
'cache' => array(
                'prefix' => 'presses_' . $this->params['slug'],
            'config' => 'presses',
)
 ));
$this->set('metaForLayout',array(
'title' => $press['Press']['meta_title'],
 'keywords' => $press['Press']['meta_keywords'],
'description' => $press['Press']['meta_description']
 ));
$this->set('press',$press);

}

 function admin_index() {
        if (isset($this->params['named']['q'])) {
            App::import('Core', 'Sanitize');
            $q = Sanitize::clean($this->params['named']['q']);
            $this->data['Filter']['q'] = $this->params['named']['q'];
            $this->paginate['Press']['conditions']['OR'] = array(
                                'Press.title LIKE'     => '%' . $q . '%',
                                'Press.slug LIKE'     => '%' . $q . '%',
                                'Press.excerpt LIKE'     => '%' . $q . '%',
                                'Press.body LIKE'     => '%' . $q . '%',
                            );
        }
$this->Press->recursive = 0;
$this->set('presses', $this->paginate());
 }

function admin_add() {
if (!empty($this->data)) {
            $arch = $this->subir($this->data['Presse']['file'], 'files');
            $this->data['Presse']['file_name'] = $arch['nom_guardar'];
 $this->data['Presse']['file_type'] = $arch['tipo'];
$this->data['Presse']['file_size'] = $arch['tamanio'];
 $this->Presse->create();
if ($this->Presse->save($this->data)) {
$this->Session->setFlash(__('The press has been saved', true));
 $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The press could not be saved. Please, try
again.', true));
 }
}
}

function admin_edit($id = null) {
 if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Invalid press', true));
 $this->redirect(array('action' => 'index'));
}
if (!empty($this->data)) {
 if ($this->Press->saveAll($this->data)) {
$this->Session->setFlash(__('The press has been saved', true));
 $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The press could not be saved. Please, try
again.', true));
 }
}
if (empty($this->data)) {
$this->data = $this->Press->read(null, $id);
 }
}

function admin_delete($id = null) {
 if (!$id) {
$this->Session->setFlash(__('Invalid id for press', true));
$this->redirect(array('action'=>'index'));
 }
if ($this->Press->delete($id)) {
// Borra todas las Imágenes y activa los callbacks.
 $this->Press->Photo->deleteAll(array('foreign_key' => $id, 'owner' =>
'presses'), true, array('beforeDelete','afterDelete'));
 $this->Press->File->deleteAll(array('foreign_key' => $id, 'owner' =>
'presses'), true, array('beforeDelete','afterDelete'));
 $this->Session->setFlash(__('Press deleted', true));
$this->redirect(array('action'=>'index'));
 }
$this->Session->setFlash(__('Press was not deleted', true));
$this->redirect(array('action' => 'index'));
 }

    function admin_toggle_status($id){
        $model = $this->Press;
        $model->contain();
        $row = $model->read(null, $id);
        $row[$model->name]['status'] = $row[$model->name]['status'] ? false
: true;

        $result = $model->save($row);
        $this->set(compact('result'));
        $this->set('rank', 'status_toggle');
        $this->set('option',$row[$model->name]['status']);
        $this->set('option_id', $id);
        $this->render('/elements/admin/admin_toggle');
    }

    public function admin_moveup($id, $step = 1) {
        if( $this->Press->moveup($id, $step) ) {
            $this->Session->setFlash(__('Moved up successfully', true),
'default', array('class' => 'success'));
        } else {
            $this->Session->setFlash(__('Could not move up', true),
'default', array('class' => 'error'));
        }

        $this->redirect($this->referer());
    }

    public function admin_movedown($id, $step = 1) {
        if( $this->Press->movedown($id, $step) ) {
            $this->Session->setFlash(__('Moved down successfully', true),
'default', array('class' => 'success'));
        } else {
            $this->Session->setFlash(__('Could not move down', true),
'default', array('class' => 'error'));
        }

        $this->redirect($this->referer());
    }
   function subir($archivo = null, $carpeta = 'files') {
        if ($archivo != null) {
            // obtenemos los datos del archivo
            $retorno['tamanio'] = $archivo['size'];
            $retorno['tipo'] = $archivo['type'];
            $arch = $archivo['name'];
            $prefijo = date('dmYHis');
$retorno['extension'] = $this->getFileExtension($archivo['name']);

            if ($arch != "") {
                // guardamos el archivo a la carpeta
                $destino =
WWW_ROOT."/".$carpeta."/".$prefijo.'.'.$extension;
                if (copy($archivo['tmp_name'],$destino)) {
                    unlink($archivo['tmp_name']);
$retorno['nom_guardar'] = $prefijo.'.'.$extension;
                    return $retorno;
                } else {
                   return;
                }
            } else {
                return;
            }
        }
    }

    function getFileExtension($str) {

        $i = strrpos($str,".");
        if (!$i) { return ""; }
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }

}



Lo que ahora veo es que no estas siguiendo las convensiones de cake, ya que
tu tabla se llama "files" y tu controlador se llama "Presses",
en teoría esto así no te debería guardar ya que va a querer guardar en la
tabla "presses", te recomiendo leer las convenciones de cakephp (
http://book.cakephp.org/1.3/es/view/892/Basic-Principles-of-CakePHP/CakePHP-Conventions.html
)

Saludos!!






El 14 de diciembre de 2012 13:55, Woodstock DG <[email protected]>escribió:

> La idea es la siguiente. Cree una seccion "Prensa" con post
> administrables, se trata de subir una imagen y un archivo pdf para que se
> listen dentro de la seccion en el frontend. Practicamente para esta seccion
> saque todo en base a otras que ya estaban las cuales ya tenian un upload de
> imagenes. Entonces el desafio era agregar otro upload para un archivo pdf.
> Para esto tome de base este upload de imagenes y trate de replicarlo para
> que suba pdfs.
> La idea es que subas el archivo, lo guarde en la base de datos
> relacionandolo con el post, tiene esta estructura (la misma que usa para
> guardar las fotos):
>
> CREATE TABLE IF NOT EXISTS `files` (
>   `id` int(11) NOT NULL AUTO_INCREMENT,
>   `foreign_key` int(11) NOT NULL,
>   `owner` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
>   `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
>   `epigraph` text COLLATE utf8_unicode_ci NOT NULL,
>   `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
>   `file_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
>   `file_size` int(11) NOT NULL,
>   `weight` int(11) NOT NULL,
>   `created` datetime NOT NULL,
>   `modified` datetime NOT NULL,
>   PRIMARY KEY (`id`),
>   KEY `foreign_key` (`foreign_key`,`owner`)
> ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
> AUTO_INCREMENT=40 ;
>
>
> Cuando subo un archivo me guarda este registro:
>
> (37, 13, 'presses', '', '', '', '', 0, 1, '2012-12-12 20:57:27',
> '2012-12-12 20:57:27'),
>
> Como ves guarda con el owner bien y el id del post, pero los datos del
> archivo no, ni tampoco sube el archivo a la carpeta "files" en el webroot,
> que tiene permisos 777.
>
>
> Espero que me haya explicado bien!
> Muchas gracias por sus aportes y su ayuda.
>
>
> El 14 de diciembre de 2012 12:17, Guillermo Rohde 
> <[email protected]>escribió:
>
>> Lo que esta pasando es que estas mezclando varias formas de subir
>> archivos aparentemente empesaste a utilizar el swfupload y lo que te pase
>> yo es para subir un archivo en un formulario simple... vas a tener arreglar
>> todo eso, podes empesar a contarnos como queres subir losa rchivos si lo
>> queres guardar en base de datos si es solamente subir y despues leer la
>> carpeta, como son las tablas en la base de datos.
>>
>> Saludos!!
>>
>> El 14 de diciembre de 2012 12:02, Woodstock DG 
>> <[email protected]>escribió:
>>
>>> isset($model
>>
>>
>>  --
>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
>> Grupos de Google.
>> Para publicar una entrada en este grupo, envía un correo electrónico a
>> [email protected].
>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>> [email protected]
>> Para tener acceso a más opciones, visita el grupo en
>> http://groups.google.com/group/cakephp-es?hl=es.
>>
>
>  --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a 
[email protected]
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a