FuelPHP - Carga de archivos

La carga de archivos es una de las funciones más utilizadas en la programación de formularios. FuelPHP proporciona una clase especial,Uploadpara manejar la carga de archivos. Aprendamos cómo cargar un archivo usando la clase Upload en este capítulo.

Configuración

La clase de carga se puede configurar usando un archivo de configuración separado, fuel/app/config/upload.php. Las entradas de configuración importantes son las siguientes:

  • max_size- Establezca el tamaño máximo del archivo que se cargará. "0" se refiere a un tamaño de carga ilimitado

  • ext_whitelist - Establecer extensiones de archivo permitidas

  • ext_blacklist - Establecer extensiones de archivo no permitidas

  • type_whitelist- Establecer tipos de archivos permitidos. Por ejemplo, "texto" para el tipo de mímica "texto / sin formato"

  • type_blacklist - Establecer tipos de archivos no permitidos

  • mime_whitelist- Establecer tipos de archivos mime permitidos. Por ejemplo, "texto / sin formato"

  • mime_blacklist - Establecer tipos de archivos mime no permitidos

  • prefix - Cadena para prefijar el nombre del archivo mientras se guarda el archivo cargado en el servidor

  • suffix - Cadena al sufijo en el nombre del archivo mientras se guarda el archivo cargado en el servidor

  • extension - Extensión del archivo cargado a configurar

  • create_path - Ya sea para crear la ruta del archivo, si no está disponible

  • overwrite - Ya sea para sobrescribir el archivo existente mientras se guarda el archivo cargado

  • auto_rename - Si cambiar el nombre del archivo agregando un número de secuencia mientras se guarda el archivo cargado

  • randomize - Ya sea para crear un nombre aleatorio de 32 caracteres para guardar el archivo cargado

Métodos de carga

La clase de carga proporciona opciones para procesar y guardar el archivo cargado por los usuarios. Cada archivo procesado (antes de guardarlo) tendrá la siguiente información en la matriz de resultados.

  • field - Nombre del campo del formulario

  • name - Nombre del archivo cargado

  • type - Tipo de archivo definido por el navegador

  • mimetype - Tipo de archivo definido por la clase de carga

  • file - Nombre completo de la ubicación temporal del archivo cargado

  • filename - Nombre de archivo del archivo cargado

  • extension - Extensión del archivo cargado

  • size - Tamaño del archivo cargado en bytes

  • errors - Matriz de error con código y mensaje de error

  • error - Si establecer errores de matriz con el motivo por el que falla la carga (en caso de falla en la carga)

Una vez que los archivos se guardan en el servidor, la matriz de resultados también tendrá la siguiente información.

  • saved_to - Ruta completamente calificada donde se guardó el archivo cargado

  • saved_as - Nombre del archivo que se guardó

  • errors - Matriz de errores actualizada

Ahora, veamos el método de la clase Upload.

es válido

is_valid devuelve verdadero, si el usuario carga algún archivo válido.

// do we have any uploaded files to save? 
if (Upload::is_valid()) { 
   // process  
}

get_files

get_files devuelve todos los archivos cargados como una matriz multidimensional. Si se especifica un índice / nombre de la entrada de archivo del formulario, devolverá el archivo cargado relacionado con la entrada de archivo especificada solamente.

foreach(Upload::get_files() as $file) { 
   // do something with the file info 
}  
if ( Upload::get_files(0)) { 
   // do something 
}

get_errors

get_errors devuelve una serie de errores, si hay un error al cargar uno o más archivos. Si se especifica un índice / nombre del nombre de entrada del archivo del formulario, devolverá el error relacionado solo con la entrada del archivo especificado.

foreach(Upload::get_errors() as $file) { 
   // do something with the file info 
}  
if (Upload::get_errors('myimage')) { 
   // do something 
}

Proceso

proceso se refiere al proceso real de recopilación de información sobre el archivo cargado. Podemos suministrar una nueva configuración personalizada usando array. Si no se especifica ninguna configuración, usará la configuración definida en fuel / app / config / upload.php

Upload::process (array( 
   'auto_rename' => false, 
   'overwrite'   => true 
));

salvar

guardar se refiere al proceso real de guardar todos los archivos validados en una ubicación adecuada. Podemos especificar el índice para guardar solo esa entrada en particular.

Upload::save();
Upload::save(0);
Upload::save(0, 3);

Ejemplo de trabajo

Creemos un nuevo controlador, Controller_Upload en nuestra muestra de empleados para probar la funcionalidad de carga.

Step 1 - Crear un archivo, fuel/app/classes/controller/upload.php. Crea un controlador de carga.

<?php 
   class Controller_Upload extends Controller { 
   }

Step 2 - Crea una nueva acción get_upload.

<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      } 
   }

Step 3 - Cree una nueva vista para la acción creada.

<!DOCTYPE html> 
<html> 
   <body> 
   
      <form action = "/upload/index" method = "post" enctype = "multipart/form-data"> 
         Select image to upload: 
         <input type = "file" name = "fileToUpload" id = "fileToUpload"> 
         <input type = "submit" value = "Upload Image" name = "submit"> 
      </form>  
      
   </body> 
</html>

Step 4 - Cree una nueva acción post_action para procesar el archivo cargado.

<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      }  
      public function post_index(){ 
         $config = array( 
            'path' => DOCROOT.'files', 
            'randomize' => true, 
            'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'), 
         );  
         Upload::process($config);  
         // if there are any valid files 
         
         if (Upload::is_valid()) { 
            Upload::save(); 
            echo "success"; 
         } else { 
            // and process any errors 
            foreach (Upload::get_errors() as $file) { 
               echo var_dump($file); 
            } 
         } 
      } 
   }

Finalmente, ejecute la aplicación solicitando la URL, http://localhost:8080/upload/index e intente cargar el archivo.

Resultado