Guillermo fijate que estoy haciendo un debug en el foreach, y concluyo que
hay un  problema con el formato de $file['type']..

debug($file['type']);

*app/Controller/AppController.php* (line *54*)

5

 *app/Controller/AppController.php* (line *54*)

a

 *app/Controller/AppController.php* (line *54*)

/

 *app/Controller/AppController.php* (line *54*)
*app/Controller/AppController.php* (line *54*)

asi no lograra compararlo con los type permitidos.

que sugieres???

gracias saludos


2011/11/27 Ogalav <[email protected]>

> estoy viendo que el script original esta implementado en cakephp 1.3
> y como es que se llama move_uploaded_file($file['tmp_name'],
> $url); ???
> no es segun php5
> move_uploaded_file($file['file']['tmp_name'], $url);???
>
>
> On 27 nov, 14:31, Ogalav <[email protected]> wrote:
> > 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 <[email protected]> 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
> [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