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.