CodeIgniter proporciona algunos ayudantes incorporados para facilitar la implementación de algunas funciones útiles en la aplicación web. Download Helper es uno de ellos que le permite integrar la función de descarga de archivos rápidamente en CodeIgniter. En este tutorial de CodeIgniter, le mostraremos con qué facilidad puede descargar archivos o imágenes de la base de datos utilizando Download Helper.
El Asistente de descarga tiene una
force_download()
función que genera encabezados de servidor que obligan a descargar datos a su computadora. Puede descargar el archivo existente desde el servidor usando la force_download()
función. La force_download()
función acepta 3 parámetros: $filename
(cadena), $data
(mixto) y $set_mime
(bool). Para descargar el archivo existente, necesitará usar la force_download()
función como la siguiente.force_download ( '/path/to/photo.jpg' , NULL );
Aquí proporcionaremos un script de ejemplo para descargar archivos o imágenes de la base de datos en la aplicación CodeIgniter . Las siguientes funcionalidades serán implementadas en este script.
- Todos los archivos se listarán de la base de datos que ya existe en la carpeta de carga (
uploads/files/
). - Los archivos serán listados con vista previa y un enlace de descarga.
- Al hacer clic en el enlace "Descargar", las descargas de archivos correspondientes del directorio.
Directorio de carga de archivos
Cree un directorio donde desee almacenar los archivos cargados. Los archivos cargados se almacenan en el
uploads/files
directorio de la raíz de la aplicación.Creación de tablas de base de datos
Para almacenar la información de los archivos se necesita una tabla en la base de datos MySQL. El siguiente SQL crea una
files
tabla con algunos campos básicos obligatorios.CREATE TABLE ` ficheros '( ` id` int ( 11 ) NOT NULL AUTO_INCREMENT, `title` varchar ( 255 ) compilar utf8_unicode_ci NOT NULL , ` file_name` varchar ( 255 ) Intercalar utf8_unicode_ci NOT NULL , `created` datetime NOT NULL , ` modificado ` datetime NOT NULL , ` status` enum ( '1' , '0' ) COLLATE utf8_unicode_ci NOT NULL DEFAULT'1' , TECLA PRIMARIA ( `id` ) ) MOTOR = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
Controlador (Files.php)
Controlador de archivos maneja la lista de archivos y la funcionalidad de descarga. Contiene tres funciones
En la
__construct()
, index()
y download()
. __construct()
- El modelo de archivo se carga para recuperar datos de archivos de la base de datos. index()
- Los datos del archivo se obtienen de la base de datos utilizando el modelo de archivo y se pasan a la vista. download()
- El archivo solicitado se descarga de acuerdo con la ID provista desde el directorio. En la
download()
función, la información del archivo se obtiene de la base de datos y force_download()
se usa para descargar el archivo respectivo del directorio.<? php if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); / ** * La clase de administración de archivos creada por CodexWorld * / class Files extiende CI_Controller { function __construct () { parent :: __construct (); $ this -> load -> model ( 'file' ); } índice de función pública () { $ data = array (); // obtener archivos de la base de datos $ datos [ 'archivos'] = $ this -> file -> getRows (); // carga la vista $ this -> load -> view ( 'files / index' , $ data ); } descarga de función pública ( $ id ) { if (! empty ( $ id )) { // load download helper $ this -> load -> helper ( 'download' ); // obtener información del archivo de la base de datos $ fileInfo = $ this -> file -> getRows (array ('id' => $ id )); // ruta del archivo $ file = 'uploads / files /' . $ fileInfo [ ' file_name ' ]; // descargar el archivo del directorio force_download ( $ file , NULL ); } } }
Modelo (File.php)
El modelo de archivo maneja todos los trabajos relacionados con la base de datos y contiene una función
getRows()
. La getRows()
función obtiene registros de la files
tabla y devuelve los datos solicitados.<? php if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); el archivo de la clase extiende el modelo de CI { / * * obtiene filas de la tabla de archivos * / function getRows ( $ params = array ()) { $ this -> db -> select ( '*' ); $ this -> db -> from ( 'archivos' ); $ this -> db -> where ( 'status' ,); $ this -> db -> order_by ( 'created' , 'desc' ); if ( array_key_exists ( 'id' , $ params ) &&! empty ( $ params [ 'id' )) { $ this -> db -> where ( 'id' , $ params [ 'id' ]); // obtener registros $ consulta = $ esto -> db -> get (); $ resultado = ( $ consulta ->0 )? $ query -> row_array (): FALSE ; } else { // establece el inicio y el límite si ( array_key_exists ( "start" , $ params ) && array_key_exists ( "limit" , $ params )) { $ this -> db -> limit ( $ params [ 'limit' ], $ params [ 'inicio' ]); } elseif (! array_key_exists ( "start" , $ params ) && ( "límite" , $ params )) { $ this -> db -> limit ( $ params [ 'limit' ]); } // obtener registros $ consulta = $ esto -> db -> get (); $ resultado = ( $ consulta -> num_rows ()> 0 )? $ consulta -> result_array (): FALSE ; } // devolver los datos recuperados devolver $ resultado ; } }
Ver (archivos / index.php)
Esta vista se carga mediante el
index()
método del controlador de archivos. Todos los archivos se enumeran con título, vista previa y enlace de descarga. Cuando el usuario hace clic en el enlace de descarga, el archivo correspondiente se descarga mediante el download()
método del Files
controlador.<? php if (! empty ( $ files )) {foreach ( $ files as $ frow ) { ?> < div class = "file-box" > < div class = "box-content" > < h5 > <? php echo $ frow [ 'title' ]; ?> </ h5 > < div class = "preview" > < embed src = " <? php echo base_url (). ' uploads / files /' . $ frow [ 'file_name' ]; ?> " > </ div > < Un href = " <? Php echo base_url . () '/ Descargar archivos /' . $ FROW [ 'id' ]; ?> " Clase = "dwn" > Descargar </ a > </ div > </ div > <? php }} ?>
Los archivos se enumeran de la base de datos como el siguiente.
No hay comentarios.:
Publicar un comentario
Dejanos tu comentario para seguir mejorando!