Gestion de descargas con PHP

  • Ene
  • 10

8 comentarios! 255 palabras - 1 hits

clase en php para gestionar descargas

Trabajando en un proyecto reciente me he visto en la necesidad de crear un script php que permita descargar determinados ficheros contenidos en un directorio concreto.

Al final me he decidido a programar una clase que lea el contenido del directorio y muestre al usuario un formulario con un selector del contenido del directorio.

Con este sistema se logra mantener anónimo el directorio compartido, es mas, ni tan siquiera es necesario que este en la ruta publica del servidor, y en mi opinión dotar de cierta seguridad al sistema de descargas.

El método de uso es bastante sencillo,

  1.  
  2.     <?php
  3.         include("download.class.php");
  4.         $dwn = new download("/path/");
  5.         $dwn->fileTypes = array('jpg','jpeg','ico','png','gif','bmp');
  6.         if(isset($_POST['files'])) $dwn->get($_POST['files']);
  7.         echo $dwn->select('files');
  8.     ?>
  9.  

El script se compone de dos ficheros, la clase propiamente dicha y el fichero que contiene los tipos mime, lo que permite añadir o eliminar según las necesidades de cada uno.

Los métodos públicos son cuatro:

  • la función download que como parámetro acepta la ruta del directorio a leer.
  • la variable fileTypes que contiene un array de los tipos de fichero que se permiten descargar.
  • la función select que se encarga de mostrar el formulario con la lista desplegable y acepta cuatro parámetros, el nombre del selector, (por defecto files). La etiqueta del selector, el nombre del fichero que se muestra seleccionado por defecto, y el limite máximo de caracteres que se permiten en los nombres de los ficheros.
  • la función get que acepta como parámetro el nombre de el fichero a descargar.

Creo que el código habla por si solo y si quedan dudas para eso están los comentarios, un saludo.

8 comentarios

  • May
  • 10

# Escrito por netroxic hace 3 años, 2 meses

Hoye no esta muy claro como dices tu; deberian poner un ejemplo pero especificando una ruta en ninguna parte veo algo como: C:/ruta/del/archivo.extención


  • Jun
  • 19

# Escrito por Lolo hace 3 años, 1 mes

Yo tengo algo tal que así:


… y el resultado es “NO FILES!!!”. El script funciona correctamente. De hecho, no tengo ningun error en el log del PHP. Pero he puesto una imagen JPG en el directorio descargas, y no me la muestra. ¿Qué puede ser, Alex?


  • Jun
  • 19

# Escrito por Lolo hace 3 años, 1 mes

El código que no ha aparecido antes es:


  • Jun
  • 19

# Escrito por Lolo hace 3 años, 1 mes

Bueno, para los que se descarguen el scrip. En el archivo PHP, al final, donde está la condición para que no os aparezca el . y el .. teneis que quitar la condición && (Y) y poner || (O).


  • Jun
  • 19

# Escrito por Lolo hace 3 años, 1 mes

Bueno, para los que se descarguen el script. En el archivo PHP, al final, donde está la condición para que no os aparezca el . y el .. teneis que quitar la condición && (Y) y poner || (O).


  • May
  • 01

# Escrito por Anonymous hace 2 años, 3 meses

Hola. El script esta genial, funciono impecable, ademas de estar super sencillo es excelente, te felicito nuevamente. Me gustaría saber si puedo modificar tu código para mis necesidades.

Saludos.


  • Oct
  • 16

# Escrito por carlos hace 1 año, 9 meses

Hola a todos sucede que lo ejecuto y no aparece nada… alguien sabe komo usar el el archvio ini, grax m toy volviendo loko… help


  • Mar
  • 09

# Escrito por Anonymous hace 1 año, 4 meses

Hola me gustaria saber como se puede usar esto


Escribe tu comentario

Puedes utilizar este formulario para escribir tu opinion sobre esta entrada, no existe ningun tipo de limitacion a la hora de enviar opiniones, tan solo sigue unas reglas basicas de cortesia y todos estaremos mas contentos.

Puedes identificarte utilizando OpenID, solo tienes que introducir tu URL OpenID en el siguiente campo y pulsar el boton de validar.





Instrucciones para los comentarios

El simbolo * indica que se trata de un campo obligatorio.

Este sitio usa Markdown junto con Smartypants para educar los textos, tambien esta disponible para los comentarios.

A continuación os muestro algunas de las equivalencias:

  • [enlace de ejemplo](http://example.com/) resulta enlace de ejemplo.
  • **Texto en Negrita**
  • _Italica_
  • > blockquote
  • > > nested blockquote
  • * Esto es un elemento de una lista desordenada (ul)
  • 1. Esto es un elemento de una lista ordenada (ol)

MC Puedes seguir las respuestas a tus comentarios con MyComments.