Tema: Clase upload
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2010, 11:42
Avatar de cesarpunk
cesarpunk
 
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Clase upload

Hola, estoy creando una clase para subir archivos pero quisiera hacerlo lo más reutilizable posible, lo malo es que los parámetros de mi funcion "Upload()" dependen también de los campos demás campos de un formulario (como texfiles combox, etc), quisiera que mi clase sólo devuelva la ruta, el tipo y el peso para poder almacenar estos datos en la BD mediante otro método independiente (quizás de otra clase diferente)... actualmente lo estoy implementando asi:

Código PHP:
<?php
//...

//Método para subir rl archivo al servidor
     
public function UploadFile($nombre,$categoria,$file_upload,$file_name,$file_size,$target_path){
         
//Reporte de Salida : 0(campo vacio), 1(excedio peso), 2(tipo de archivo), 3(existe separata), 4(subio)
     
        
if ($this->validTypeFile($file_name)==true){
            if(
$file_size<1048576){//1MB
                
if (!file_exists($target_path)){                          
                    if(@
move_uploaded_file($file_upload$target_path)){
                    
                        
//guardamos los datos
                        
$size_archivo $this->sizeFile($file_size);
                        
$type_archivo $this->typeFile($file_name);
                        
$saveFile $this->addFile($nombre,$categoria,$target_path,$type_archivo,$size_archivo);
                        if(
$saveFile==true){$report 4;}
                            
                    }else{
$report 0;}
                }else{
$report 3;}/*en esta seccion ingresa el file repetido, en caso de pasar... le mandamos error*/
            
}else{$report 1;}
        }else{
$report 2;}
        
        return 
$report;
     }


     
//Método para registrar el archivo en le BD
     
public function addFile($nombre,$categoria,$raiz_archivo,$tipo_archivo,$peso_archivo){
        
$today date("Y-m-d H:i:s");
        
        
$sql "INSERT INTO archivo(archivo_nombre,categoria_id,archivo_path,archivo_tipo,archivo_peso,archivo_fecha) VALUES('".$nombre."','".$categoria."','".$raiz_archivo."','".$tipo_archivo."','".$peso_archivo."','".$today."');";
        
$result $this->db->ejecutar($sql);
        if(!
$result){    
            exit(
'Perdonen las molestias. Tenemos un problema técnico. Esperamos resolverlo en los próximos minutos');
        }else{return 
true;}
     }
?>
Como en este ejemplo, en la funcion pongo $nombre y $categoria, campos de un formulario, cosa que sólo deberían estar en la funcion addFile() que guarda en la bd, mi intención es que UploadFile() sólo devuelva $target_path,$type_archivo,$size_archivo... pero como retorno estos valores en caso quiera mandarlos a otro método (quizas de otra clase) como array dentro de una variable de sesion? como una instancia? espero me puedan recomendar alguna solución, ya que no quiero estar creando la misma función por cada formulario diferente que tenga un input file.
__________________
Quitenme la vida pero no la bebida.