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.