Empezamos por crear un controlador llamado files.php dentro de: ci_downloads/application/controllers/ En el método constructor de files.php cargamos el Helper Download que es el que nos permite descargar los archivos a nuestro equipo, el Helper File para obtener los nombres de cada archivo y crearles un enlace para descargar, aparte de estos también utilizaremos los helpers: URL y HTML.
Código de files.php
<?phpAhora creamos 3 vistas en ci_dowloads/application/views/, la primera le llamamos upload_form.php, la segunda la llamamos upload_success.php y la última filenames.php
class Files extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array('download', 'file', 'url', 'html', 'form'));
$this->folder = 'uploads/';
}
public function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
//************ CARGA DE ARCHIVOS ****************
public function do_upload()
{
$config['upload_path'] = $this->folder;
$config['allowed_types'] = 'zip|rar|pdf|docx|txt';
$config['remove_spaces']=TRUE;
$config['max_size'] = '2048';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
public function info(){
$files = get_filenames($this->folder, FALSE);
if($files){
$data['files']=$files;
}else{
$data['files']=NULL;
}
$this->load->view('filenames',$data);
}
//************ DESCARGA DE ARCHIVOS ***********************
public function downloads($name){
$data = file_get_contents($this->folder.$name);
force_download($name,$data);
}
}
Código de upload_form.php
<html>
<head>
<title>Subir Archivos</title>
</head>
<body>
<?=heading('Suba un archivo zip, rar, pdf, docx o txt', 3);?>
<?=$error;?>
<?=form_open_multipart('files/do_upload');?>
<input type="file" name="userfile" size="20" />
<br />
<input type="submit" value="Subir Archivo" />
<?=form_close()?>
<h5><?=br(1).anchor('files/info', 'Listado de archivos para descargar'); ?></h5>
</body>
</html>
Código de upload_success.php
<html>
<head>
<title>Exito</title>
</head>
<center>
<body>
<?=heading('El archivo se ha subido correctamente', 4);?>
<h5><?=anchor('files', 'Regresar'); ?></h5>
<h5><?=anchor('files/info', 'Listado de archivos para descargar'); ?></h5>
</body></center>
</html>
Código de filenames.php
<?phppara terminar creamos una carpeta llamada uploads en la raíz del directorio principal ci_downloads/, y luego vamos a ci_downloads/application/config/ y abrimos routes.php y en la linea 41 definimos el controlador que va a cargar por defecto.
if($files){
echo heading('Archivo(s) disponible(s) para descargar', 3);
foreach($files as $file){
echo anchor('files/downloads/'.$file, $file).br(1);
}
echo br(1).anchor('files', 'Subir otro archivo');
}else{
echo heading('No hay archivos para descargar', 3).anchor('files', 'Subir un Archivo');
}
$route['default_controller'] = "files";Descargar archivos
funciona perfecto muchas Gracias :)
ResponderBorrarExcelente, me alegro!
ResponderBorrar