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.
