Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Perl: Subir archivo con identificador

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Dom Jun 22, 2008 5:52 pm
Gourbette
Perlero Nuevo
Perlero Nuevo
Registrado: 22 Jun 2008
Mensajes: 2
Perl: Subir archivo con identificador Responder citando

Hola,

Soy programador de PHP entre otros lenguajes y estoy creando un script para subir archivos al servidor.

Hoy estuve viendo los ejemplos de cómo hacerlo con Perl, ya que con PHP no puedo consultar el progreso a no ser que instale una extensión, cosa que no quiero en estos momentos.

Nunca había tocado Perl hasta hoy y he estado deduciendo el script aquí posteado y añadido algunas modificaciones.

Me gustaría resolver un par de dudas, ya que desconozco las funciones que Perl pone a nuestra disposición, aunque la sintaxis del lenguaje es parecida a PHP, cosa que me facilita el aprendizaje.

El upload lo hace sin problemas, pero:

1. ¿Cómo podría subir el archivo añadiéndole un identificador? De esta forma poder consultar su progreso y mostrarlo al usuario.

2. Cuando subo el archivo a la carpeta correspondiente, ¿Cómo elimino el archivo temporal que se crear dentro de cgi-bin?

3.
¿Cómo puedo crear carpetas? Me interesaría crear una carpeta con el nombre del identificador que obtengo mediante GET dentro de la carpeta de archivos para subirlo ahí.

Aún tengo que añadir algunas cosas, como tamaño máximo, etc... pero de momento lo que me trae más "de cabeza" son estas 3 cuestiones.

Os adjunto el código modificado:

Perl:

#!C:\xampp\perl\bin\perl.exe -w

use CGI qw(:standard);
print header;
require 'postget.pl';

my %datos;
%datos = &postget('G');
my $codeID = $datos{'codeID'};             
my $upID = $datos{'upID'};

if($codeID && $upID)
{
        $query = new CGI;
        $UpFile = $query->param("UpFile");
        $UpFile =~ s/.*[\/\\](.*)/$1/;
        $UpFileHandle = $query->upload("UpFile");
        $UpDir = '../files';
        my @Ext = ('php','php3','php4','pl','cgi','asp','aspx');
        my $CorrectExt = 1;
        foreach(@Ext)
        {
                if($UpFile =~ /\.$_$/i)
                {
                        $CorrectExt = 0;
                        last;
                }
        }
        if($CorrectExt eq 1)
        {
                open(UPLOADFILE, ">$UpDir/$UpFile") or die 'Upload error.';
                binmode UPLOADFILE;
                while(<$UpFileHandle>)
                {
                        print UPLOADFILE;
                }
                close UPLOADFILE;
                print 'File uploading success.';
                print '<br />';
                print 'CodeID: '.$codeID;
                print '<br />';
                print 'UpID: '.$upID;
        }
        else
        {
                print 'The file extension is forbidden.';
        }
}
else
{
        print 'Upload error: CodeID and UpID are empty.';
}


Espero que podáis ayudarme.
Gracias.
Mensaje Dom Jun 22, 2008 6:41 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 481
Ubicación: Frente al monitor
Responder citando

Cita:
2. Cuando subo el archivo a la carpeta correspondiente, ¿Cómo elimino el archivo temporal que se crear dentro de cgi-bin?

Si hablas de un archivo en disco... usando la función unlink

Perl:
unlink "archivo1", "archivo2...";

Si estás en un VMS, usa

Perl:
1 while unlink "archivo1", "archivo2...";


Cita:
3. ¿Cómo puedo crear carpetas? Me interesaria crear una carpeta con el nombre del identificador que obtengo mediante GET dentro de la carpeta de archivos para subirlo ahí.

Con la función mkdir
Perl:
mkdir "diractorio1", "directorio2";


Te recomiendo los siguientes tutorial:

http://perlenespanol.baboonsoftware.com/tutoriales/cgi/cgi_primeros_pasos.html
http://perlenespanol.baboonsoftware.com/tutoriales/cgi/leer_datos_en_tu_cgi.html

El libro de CGI es un libro antiguo pero útil, te lo recomiendo.
Mensaje Dom Jun 22, 2008 6:51 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Re: Perl: Subir archivo con identificador Responder citando

Gourbette escribió:
Me gustaría resolver un par de dudas, ya que desconozco las funciones que Perl pone a nuestra disposición, aunque la sintaxis del lenguaje es parecida a PHP, cosa que me facilita el aprendizaje.

Bienvenido a los foros de Perl en Español, Gourbette.

Perl no funciona de la misma manera que PHP, que pone a disposición del programador 5.000 funciones, provenientes de las librerías que se hayan compilado con el núcleo de PHP.

En lugar de eso, se suele hacer lo mismo que con otros lenguajes: importar las librerías en el momento de la ejecución del programa. En Perl, esas librerías se llaman módulos. Por ejemplo, para lo que quieres hacer hay algunos módulos en CPAN para conseguirlo. Uno de ellos es CGI::FileUpload que permite subir ficheros de forma asíncrona.

Como ha dicho creating021, en este sitio web hay algunos tutoriales para empezar a entender el uso con Perl.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group