CGI - Envío de ficheros PDF y txt a usuario, CGI en Perl

 
Vista:

Envío de ficheros PDF y txt a usuario, CGI en Perl

Publicado por Agustin (4 intervenciones) el 09/05/2002 10:50:38
Hola Colegas:

Necesito una rutina para poder enviar un fichero pdf o de texto cuyo nombre paso como parámetro al cgi. He realizado alguna rutina para enviar ficheros, pero con este tipo me da problemas, sobre todo con los de texto, pues el I.Explorer los visualiza en pantalla y a mi me interesa que se abra la ventana de Guardar. Supongo que tendrá que ver son la definición del Content-Type que declaro.
Si sabeís de algo os lo agradecería.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Rutina para enviar y descargar ficheros PDF y de texto

Publicado por Alejandro (140 intervenciones) el 23/08/2023 18:29:52
Hola, Agustín.

Si estás buscando una manera de enviar y descargar archivos PDF y de texto a través de un CGI en un servidor web, aquí tienes una posible implementación en Perl que puedes utilizar como punto de partida:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl
 
use CGI;
use strict;
use warnings;
 
my $cgi = CGI->new();
my $file_name = $cgi->param('filename'); # Nombre del archivo pasado como parámetro
 
if ($file_name) {
    my $file_path = "/ruta/al/directorio/$file_name"; # Ruta completa al archivo en el servidor
 
    if (-e $file_path) {
        print $cgi->header(
            -type => 'application/octet-stream',
            -attachment => $file_name
        );
 
        open my $file_fh, '<', $file_path or die "No se puede abrir el archivo: $!";
        binmode $file_fh;
 
        while (<$file_fh>) {
            print $_;
        }
 
        close $file_fh;
    } else {
        print $cgi->header(-status => '404 Not Found');
        print "Archivo no encontrado.";
    }
} else {
    print $cgi->header(-status => '400 Bad Request');
    print "Falta el parámetro 'filename'.";
}

Asegúrate de reemplazar `/ruta/al/directorio/` con la ruta real en tu servidor donde se encuentran los archivos. Este script toma el nombre del archivo como parámetro y luego envía el archivo al navegador para su descarga. Define el tipo de contenido como 'application/octet-stream' para asegurarte de que el navegador inicie una descarga en lugar de intentar mostrar el archivo en línea.

Si utilizas este script en un servidor Apache, asegúrate de que la extensión `.pl` esté configurada para ejecutarse como un CGI y de que el módulo `CGI` de Perl esté instalado.

Recuerda adaptar y personalizar el script según tus necesidades específicas. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar