Puntos clave
- La biblioteca de carga de CodeIgniter facilita la carga de archivos, incluida la configuración de los tipos y tamaños de archivo permitidos.
- Necesitarás un controlador para procesar la subida y vistas para el formulario de subida y el mensaje de éxito.
- Recuerda utilizar un formulario multiparte para subir archivos.
La carga de archivos en CodeIgniter tiene dos partes principales: el frontend y el backend. Del frontend se encarga el formulario HTML que utiliza el tipo de entrada de formulario archivo. En el backend, la biblioteca de carga de archivos forma la entrada enviada desde el formulario y la escribe en el registro de transferencia.
Este tutorial trata sobre el proceso de creación de un componente de subida de archivos basado en CodeIgniter que podría utilizarse fácilmente para subir imágenes y otros archivos con facilidad. Podrías validar e incluso restringir el tamaño y tipo de archivo durante el proceso de subida.
Creación de carpetas
El primer paso es la creación de dos carpetas que forman la base del proceso de subida. La primera carpeta es la carpeta de destino que recibirá los archivos subidos.
A continuación, ve a la raíz de la instalación de CI y crea una carpeta llamada «uploads«.
Ve a la carpeta view (situada en la raíz de la instalación de CI) y crea dos nuevos archivos «view». Nombra estos archivos file_view.php (muestra el formulario que contiene los campos de subida de archivos) y upload_success.php (muestra el mensaje de subida correcta).
Nada tan fácil como desplegar aplicaciones CodeIgniter en la nube
Con Cloudways, puedes tener tus aplicaciones CodeIgniter funcionando en servidores gestionados en la nube en sólo unos minutos.
Crear el controlador
El siguiente paso es la creación de un archivo en la carpeta del controlador. Nombra el archivo upload_controller.php. En este archivo, cargaré una librería para inicializar la clase Upload mediante el siguiente código:
$this->load->library('upload');
Establecer preferencias de carga de archivos
También estableceré las preferencias para el proceso de carga de archivos a través de la función del controlador do_upload(). esta función contendrá el siguiente código
$config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768';
Como has podido ver, a través de esta función, puedes restringir fácilmente la ruta de subida, los tipos de archivo permitidos, el tamaño máximo y las dimensiones de la imagen.
podrás ver esta función en acción cuando llames al archivo file_view.php. si estás en un dominio de ensayo, utiliza la URL: tu-dominio/ci_demo/index.php/upload_controller/file_view O en el caso de loclhost: localhost/ci_demo/index.php/upload_controller/file_view
Relacionado: Cómo alojar CodeIgniter PHP en la nube
El Ayudante de Formularios
Ten en cuenta que la carga de archivos requiere un formulario multiparte. Para ello, he incluido un ayudante de formulario en el controlador con la siguiente sintaxis:
$this->load->helper(array('form', 'url'));
También te puede gustar: Guía sencilla para la validación de formularios en CodeIgniter
Vista estructural
Para la estructura de la subida de imágenes, empezaré creando un archivo en la carpeta views con el nombre vista_personal.php. Abre este archivo y añádele el siguiente código:
<html>
<head>
<title>File Upload In Codeigniter</title>
</head>
<body>
<?php echo $error;?>
<?php echo form_open_multipart('upload_controller/do_upload');?>
<?php echo "<input type='file' name='userfile' size='20' />"; ?>
<?php echo "<input type='submit' name='submit' value='upload' /> ";?>
<?php echo "</form>"?>
</body>
</html>
A continuación, ve a la carpeta del controlador y crea un nuevo archivo con el nombre upload_controller.php
También te puede gustar: Cómo pasar datos del controlador a la vista en CodeIgniter
Añade el siguiente código a este archivo:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Upload_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function custom_view(){
$this->load->view('custom_view', array('error' => ' ' ));
}
public function do_upload(){
$config = array(
'upload_path' => "./uploads/",
'allowed_types' => "gif|jpg|png|jpeg|pdf",
'overwrite' => TRUE,
'max_size' => "2048000", // Can be set to particular file size , here it is 2 MB(2048 Kb)
'max_height' => "768",
'max_width' => "1024"
);
$this->load->library('upload', $config);
if($this->upload->do_upload())
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success',$data);
}
else
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('custom_view', $error);
}
}
}
?>
Observa que la matriz $config de do_upload() tiene un elemento llamado allowed_types. Puedes utilizar los parámetros de este elemento para cambiar los tipos de archivo permitidos. Por ejemplo, para permitir un rango de archivos, utiliza la siguiente estructura de este elemento:
'allowed_types' => "gif|jpg|jpeg|png|iso|dmg|zip|rar|doc|docx|xls|xlsx|ppt|pptx|csv|ods|odt|odp|pdf|rtf|sxc|sxi|txt|exe|avi|mpeg|mp3|mp4|3gp",
El mensaje del éxito
Para mostrar el mensaje de subida correcta, utilizaré el archivo upload_success.php (ubicado en la carpeta view). Añádele el siguiente código:
<html>
<head>
<title>Success Message</title>
</head>
<body>
<h3>Congragulation You Have Successfuly Uploaded</h3>
<!-- Uploaded file specification will show up here -->
<ul>
<?php foreach ($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>
<p><?php echo anchor('upload_controller/file_view', 'Upload Another File!'); ?></p>
</body>
</html>
Nota: Asegúrate de que estás llamando a la ruta correcta para la clase del controlador
Relacionado: Cómo crear una API REST en CodeIgniter
Conclusión
Este ha sido un breve tutorial sobre la creación de un proceso de subida de imágenes y archivos en una aplicación basada en CodeIgniter. Recuerda que puedes modificar fácilmente los tipos de archivo y parámetros de imagen permitidos a través del código. Además, para aquellos que desplieguen sus aplicaciones CodeIgniter, considera explorar las soluciones de Hosting CodeIgniter. Estos proveedores de alojamiento especializados suelen tener entornos preconfigurados que agilizan el proceso de despliegue y pueden ofrecer funciones adicionales optimizadas para el rendimiento de CodeIgniter.
Si necesitas ayuda para entender el código o integrarlo en tu aplicación CI, deja un comentario a continuación.
Preguntas frecuentes
¿Existe alguna biblioteca o ayuda específica de CodeIgniter para gestionar la carga de archivos?
Sí, CodeIgniter incluye una biblioteca «Upload» integrada para gestionar eficazmente las subidas de archivos, gestionar tareas como la validación y reubicar el archivo en una ubicación permanente.
¿Existe alguna consideración para optimizar el rendimiento y gestionar la carga de archivos grandes en CodeIgniter?
Para gestionar la subida de archivos grandes en CodeIgniter, ten en cuenta factores como la configuración de PHP, las configuraciones de CodeIgniter, la configuración del servidor, la subida de archivos en trozos, la validación, la gestión de errores, la limpieza posterior a la subida y el almacenamiento de archivos.
¿Cómo puedo mostrar imágenes o archivos subidos en el frontend utilizando CodeIgniter?
Puedes mostrar imágenes o archivos cargados en CodeIgniter proporcionando un enlace o una ruta a la ubicación del archivo en el servidor. Por ejemplo, utilizando una etiqueta HTML con el atributo src establecido en la ubicación del archivo.
¿Existen consideraciones de seguridad al gestionar la carga de archivos en CodeIgniter?
Ten en cuenta las siguientes consideraciones de seguridad para la subida de archivos en CodeIgniter:
- Aplica una validación exhaustiva de los archivos.
- Restringe los tipos de archivo permitidos en función de tus necesidades.
- Establece un límite de tamaño de subida.
- Cambia el nombre de los archivos subidos para mitigar el riesgo de ejecución de scripts o de sobrescritura de archivos.
- Almacena los archivos fuera de la raíz web o aplica controles de acceso para evitar accesos no autorizados.
- Realiza análisis de virus en los archivos cargados.
- Asegúrate de que los permisos de los archivos son correctos.
¿Cuáles son algunos consejos comunes para resolver problemas con la carga de archivos e imágenes en CodeIgniter?
Estos son algunos consejos comunes para resolver problemas con la subida de archivos e imágenes en CodeIgniter:
- Confirma los permisos correctos de archivos y carpetas.
- Revisa los ajustes de configuración de PHP.
- Examina las configuraciones de CodeIgniter.
- Validar reglas de formulario.
- Analiza los mensajes de error.
- Activa la depuración y el registro.
- Realiza pruebas en diversos entornos.
Start Growing with Cloudways Today.
Our Clients Love us because we never compromise on these