Una vez explicado que para poder subir archivos a nuestro servidor debemos usar este tipo de enctype veamos ahora la clase para subirlos y su implementación
/* clase para subir archivos al servidor autor: Carlos Belisario */ class upload { #atributo para tener los archivos private $_file; #atributo para obtener el peso maximo private $_maxSize; #atributo para obtener el tipo de archivos a subir private $_type; #atributo para la ruta donde sera subido el archivo private $_ruta; #iniciamos toda la magia pasamos como parametro el dato $_FILE['campo'],$destino public function __construct($file = NULL,$destino = NULL, $validate = array()) { if(count($file) === 0){ echo "debe indicar el archivo que desea subir"; } else{ $this->_file = $file; if(!empty($destino)) $this->_ruta = $destino.'/'.$file['name']; else $this->_ruta = $file['name']; if(is_array($validate)){ if(count($validate) > 0){ if(array_key_exists('maximo',$validate)) $this->_maxSize = $validate['maximo']; if(array_key_exists('tipo',$validate)){ if(is_array($validate['tipo'])) $this->_type = $validate['tipo']; else echo "debe indicar los tipo de archivo en formato array"; } $return = $this->validate(); } } else{ $return = $this->uploadFile(); } echo $return; } } private function validate() { if(file_exists($this->_ruta)) $return = "el archivo ya existe en el servidor"; if(!empty($this->_maxSize)){ if($this->_maxSize < $this->_file['size']) $return = "el tamaño del archivo es superior al soportado"; } if(count($this->_type) > 0){ $tipo = explode('/',$this->_file['type']); if(!in_array($tipo[1],$this->_type)) $return = "no esta en el arreglo"; } if(empty($return)){ $return = $this->uploadFile(); } return $return; } private function uploadFile() { if(@copy($this->_file['tmp_name'],$this->_ruta)) return "el archivo fue subido correctamente"; else return "ha ocurrido un error al subir el archivo ".$this->_file['name']." puede que la ruta indicada ".$this->_ruta." no sea correcta"; } }
Si nos fijamos la forma de utilizar esta clase es indicando los parámetros al constructor de nuestras clases y automáticamente según los parámetros que se indiquen el automáticamente subirá el archivo los parámetros que tenemos son los siguientes:
$file: Este parámetro indicamos el valor recibido del formulario por medio de $_FILE de manera que tengamos disponibles todos los índices de este arreglo en nuestra clase.
$destino: En este parámetro indicamos la carpeta destino de nuestro archivo es decir donde quedaran guardados los archivos que subamos por nuestra clase. Si este vacio automáticamente lo guarda en el mismo nivel que esta el archivo en el árbol de carpetas de nuestro sitio.
$validate: Es un arreglo asociativo donde podemos indicar el tamaño máximo y el tipo de archivo que deseamos que sean subidos a nuestro servidor, de manera que si queremos solo JPG lo indicamos este array asociativo está compuesto de la siguiente manera
$validate = array('maximo'=>cantidad_maxima_en_byte,'tipo'=>array('tipoarchivo1',tipoarchivo2));
El índice máximo indica el tamaño máximo del archivo que deseamos subir, el índice tipo indicamos los tipos de archivos soportados.
Pues entonces veamos la implementación
subir.php
require_once(upload.php); $archivo = $_FILE['campo_archivo']; $destino = 'Imagenes'; $validate = array('maximo'=>1048576,'tipo'=>array('jpg','png',gif)); $upload = new upload($archivo,$destino,$validate);
con tan solo indicar los parametros al constructor de nuestra clase podremos subir nuestro archivo al servidor, espero que les sea util, cualquier sugerencia o mejora por favor indicarla y asi como siempre digo aprendemos todos en el caminos hasta una proxima entrada
No hay comentarios:
Publicar un comentario