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.
