lunes, 16 de diciembre de 2013

Descargar archivos del servidor - CGI de Perl


Descargar archivos del servidor - CGI de Perl



Interesante: Vídeo Tutorial del CGI de Perl

Interesante: Vídeo Tutorial del lenguaje Perl


Vamos a seguir profundizando con CGI y en esta ocasión vamos a ver un ejemplo con el cual podrás forzar la descarga de cualquier archivo con Perl, es decir, archivos de texto, imágenes(jpg, png, gif, ...), pdf, ...

Para este ejemplo crea una carpeta llamada download en la carpeta tutorial-cgi, en esta carpeta puedes alojar los archivos que podrán ser descargados.

Crea un archivo de texto, escribe algo en él y guárdalo en la carpeta download con el nombre que quieras, yo lo llamaré prueba.txt, también vamos a crear un script CGI que será el encargado de realizar la descarga, llámalo como download.cgi y guárdalo en la carpeta cgi-bin ...



#!"C:\xampp\perl\bin\perl.exe"

#Descarga de archivos del servidor con CGI

use strict;
use CGI;

#Objeto CGI
my $cgi = new CGI;

#Ruta del archivo
my $ruta = "../download/prueba.txt";

#Apertura del archivo para lectura
open(FILE, "<", $ruta);
binmode(FILE);

#Obtener el tamaño del fichero
my $size = -s $ruta;

#Declarar la variable que obtendrá el buffer de datos
my $datos;

#Lectura del fichero
read(FILE, $datos, $size);

#Cerrar el fichero
close(FILE);

#----------------------------------------------------------------------------

#Llamar a CGI e incluir las cabeceras para la descarga del archivo
print $cgi->header(-type=>'x-download', -attachment=>'prueba.txt'), $datos;

#Otra forma de llamar a CGI incluyendo cabeceras, es lo mismo que lo anterior
#print "Content-type: x-download\n";
#print "Content-disposition: attachment; filename=prueba.txt\n\n";
#print $datos;

#----------------------------------------------------------------------------


Ejecuta en el navegador http://localhost/tutorial-cgi/cgi-bin/download.cgi y te mostrará la ventana de descarga ...




Ok, como puedes ver en el script viene comentada cada acción, puedes probar a alojar imágenes en la carpeta download y forzar su descarga, para ello tienes que modificar el nombre del archivo a descargar, este pequeño programa se puede perfeccionar mediante peticiones POST o GET como veremos más adelante en este tutorial, también es interesante que entiendas el modo en que CGI trabaja con las cabeceras, en el script se muestra dos formas de construir cabeceras, ambas son totalmente válidas, ahora tu escoges la que más te guste.

Si quieres saber más sobre cabeceras(headers) te aconsejo que eches un vistazo a la siguiente página ... HEADERS HTTP