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.