el script lo entiendo perfectamente.
pero lo implemento y ni si quiera me da un error ..actualizo la
carpeta de files en webroot y nada que sube el pdf

codigo:
 en el add del controller

        $name = $this->request->data['Orden']['doc']['name'];//--> nombre del
archivo (como se va a guardar)
                        $formdata = $this->request->data['Orden']['doc']; //--> 
el array
que contiene la info del archivo
                        $folder = 'files'; //--> la carpeta en la que se guarda
                        $itemid = null; //--> opcional para crear una subcarpeta


        $this->_uploadFiles($name, $formdata, $folder, $itemid);

-----------------
en el appcontroller

        function _uploadFiles($name, $formdata, $folder, $itemId=null) {
                                // setup dir names absolute and relative
                                $folder_url = WWW_ROOT.$folder;
                                $rel_url = $folder;


                                // create the folder if it does not exist
                                if(!is_dir($folder_url)) {
                                        mkdir($folder_url);
                                }

                                // if itemId is set create an item folder
                                if($itemId) {
                                        // set new absolute folder
                                        $folder_url = 
WWW_ROOT.'archivos/'.$folder.'/'.$itemId;
                                        // set new relative folder
                                        $rel_url = 
'archivos/'.$folder.'/'.$itemId;
                                        // create directory

                                        //die($folder_url);
                                        if(!is_dir($folder_url)) {
                                                mkdir($folder_url);
                                        }
                                }

                                // list of permitted file types, this is only 
images but documents
can be added

                                $permitted = array('application/pdf' 
,'application/x-pdf' );

                                // loop through and deal with the files
                                foreach($formdata as $file) {
                                        // assume filetype is false
                                        $typeOK = false;
                                        // check filetype is ok
                                        foreach($permitted as $type) {
                                                if($type == $file['type']) {
                                                        $typeOK = true;
                                                        break;
                                                }
                                        }
                                        //$result = array('errors', 'nofiles', 
'urls');
                                        // if file type ok upload the file

                                if($typeOK) {
                                                // switch based on error code
                                                switch($file['error']) {
                                                        case 0:
                                                                // check 
filename already exists

                                                                
if(!file_exists($folder_url.'/'.$name)) {
                                                                        // 
create full filename
                                                                        
$full_url = $folder_url.'/'.$name;
                                                                        $url = 
$rel_url.'/'.$name;
                                                                        // 
upload the file
                                                                        
$success = move_uploaded_file($file['tmp_name'], $url);
                                                                } else {
                                                                        
$success = 0;
                                                                        
$result['errors'][] = "El archivo ya existe.";
                                                                }
                                                                // if upload 
was successful
                                                                if($success) {
                                                                        // save 
the url of the file
                                                                        
$result['urls'][] = $url;
                                                                } else {
                                                                        
$result['errors'][] = "Error en la subida del archivo. Por
favor intente nuevamente.";
                                                                }
                                                                break;
                                                        case 3:
                                                                // an error 
occured
                                                                
$result['errors'][] = "Error subiendo el archivo. Por favor
intente nuevamente.";
                                                                break;
                                                        default:
                                                                // an error 
occured
                                                                
$result['errors'][] = "Error de sistema uploading el archivo.
Contacte con el administrador.";
                                                                break;
                                                }
                                        } elseif($file['error'] == 4) {
                                                // no file was selected for 
upload
                                                $result['nofiles'][] = "No 
ningun archivo seleccionado";
                                        } else {
                                                // unacceptable file type
                                                $result['errors'][] = "El 
archivo no puede ser subido. Solo
archivos: PDF.";
                                        }
                                }
                        return $result;
                        }


en teoria no esta realizando el return porque no lo estoy solicitando.
aunque lo hice de la siguiente forma:

public function add() {
        if ($this->request->is('post')) {
            $this->Orden->create();
                        //subiendo archivo

                        $name = 
$this->request->data['Orden']['doc']['name'];//--> nombre
del archivo (como se va a guardar)
                        $formdata = $this->request->data['Orden']['doc']; //--> 
el array
que contiene la info del archivo
                        $folder = 'files'; //--> la carpeta en la que se guarda
                        $itemid = null; //--> opcional para crear una subcarpeta

                        $files_uploads = $this->_uploadFiles($name, $formdata, 
$folder,
$itemid);

                        $this->request->data['Orden']['doc'] = 
$files_uploads['urls'][0];;

            if ($this->Orden->save($this->request->data)) {
                $this->Session->setFlash(__('The orden has been
saved'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The orden could not be
saved. Please, try again.'));
            }
        }
        $users = $this->Orden->User->find('list');

        $this->set(compact('users'));
    }

y pues en este caso me dijo que no reconocia el indice urls

entonces estoy suponiendo que ni si quiera esta pasando por el
move_uploaded_file($file['tmp_name'], $url);

seguire intentando..



On 26 nov, 03:42, Guillermo Arancio <quieneslat...@gmail.com> wrote:
> Hola Omar, estuve revisando mis scripts y encontre uno que saque de
> internet hace mucho para guardar un archivo en el webroot
>
> ahi te lo paso
>
> $name --> nombre del archivo (como se va a guardar)
> $formdata --> el array que contiene la info del archivo
> $folder --> la carpeta en la que se guarda
> $itemid --> opcional para crear una subcarpeta
>
> esta funcion la cree en el modelo
>
> function _uploadFiles($name, $formdata, $folder, $itemId = null) {
>         // setup dir names absolute and relative
>         $folder_url = WWW_ROOT.$folder;
>         $rel_url = $folder;
>
>         // create the folder if it does not exist
>         if(!is_dir($folder_url)) {
>             mkdir($folder_url);
>         }
>
>         // if itemId is set create an item folder
>         if($itemId) {
>             // set new absolute folder
>             $folder_url = WWW_ROOT.'archivos/'.$folder.'/'.$itemId;
>             // set new relative folder
>             $rel_url = 'archivos/'.$folder.'/'.$itemId;
>             // create directory
>
>             //die($folder_url);
>             if(!is_dir($folder_url)) {
>                 mkdir($folder_url);
>             }
>         }
>
>         // list of permitted file types, this is only images but documents
> can be added
>         //$permitted =
> array('image/gif','image/jpeg','image/pjpeg','image/png');
>         $permitted = array('application/pdf' ,'application/x-pdf' );
>  //solo sube pdfs
>
>         // loop through and deal with the files
>         foreach($formdata as $file) {
>             // assume filetype is false
>             $typeOK = false;
>             // check filetype is ok
>             foreach($permitted as $type) {
>                 if($type == $file['type']) {
>                     $typeOK = true;
>                     break;
>                 }
>             }
>             //$result = array('errors', 'nofiles', 'urls');
>             // if file type ok upload the file
>             if($typeOK) {
>                 // switch based on error code
>                 switch($file['error']) {
>                     case 0:
>                         // check filename already exists
>                         if(!file_exists($folder_url.'/'.$name)) {
>                             // create full filename
>                             $full_url = $folder_url.'/'.$name;
>                             $url = $rel_url.'/'.$name;
>                             // upload the file
>                             $success =
> move_uploaded_file($file['tmp_name'], $url);
>                         } else {
>                             $success = 0;
>                             $result['errors'][] = "El archivo ya existe.";
>                         }
>                         // if upload was successful
>                         if($success) {
>                             // save the url of the file
>                             $result['urls'][] = $url;
>                         } else {
>                             $result['errors'][] = "Error en la subida del
> archivo. Por favor intente nuevamente.";
>                         }
>                         break;
>                     case 3:
>                         // an error occured
>                         $result['errors'][] = "Error subiendo el archivo.
> Por favor intente nuevamente.";
>                         break;
>                     default:
>                         // an error occured
>                         $result['errors'][] = "Error de sistema uploading
> el archivo. Contacte con el administrador.";
>                         break;
>                 }
>             } elseif($file['error'] == 4) {
>                 // no file was selected for upload
>                 $result['nofiles'][] = "No ningun archivo seleccionado";
>             } else {
>                 // unacceptable file type
>                 $result['errors'][] = "El archivo no puede ser subido. Solo
> archivos: PDF.";
>             }
>         }
>     return $result;
>     }
>
> y la llamo desde el controller de la siguiente manera:
>
>       $result = $this->Documento->_uploadFiles($name, $formdata, $folder,
> $subfolder);
>       //copio el resultado de la funcion en la variable que va a almacenar
> la direccion del archivo
>       $this->data['Documento']['archivo'] = $result['urls'][0];
>
> espero que te sirva.
>
> --
> Saludos Guillermo Arancio

-- 
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 
cakephp-es@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a 
cakephp-es+unsubscr...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a