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.

Responder a