Página 1 de 1

Limitar extensión de archivo al hacer UPLOAD

NotaPublicado: 2019-08-30 08:52 @411
por alvilazaro
Hola, muy buenos días. Tengo este programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $CGI::POST_MAX = 1024 * 5000;
  2. my $upload_dir = "../../certificados/";
  3. my $query      = new CGI;
  4. my $filename   = "";
  5. my $filename   = $query->param("archmov");
  6. my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime;
  7. $mon += 1;
  8. my $datetime = sprintf "%02d%02d%04d%02d%02d%02d", $mon, $mday, $year, $hour, $min, $sec;
  9.  
  10. my $upload_filehandle = $query->upload("archmov");
  11.  
  12. open( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
  13. binmode UPLOADFILE;
  14.  
  15. while (<$upload_filehandle>) {
  16.     print UPLOADFILE;
  17. }
  18.  
  19. close UPLOADFILE;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Hasta acá, todo perfecto. Pero ahora lo que quiero hacer es limitar las extensiones. Es decir, que sólo puedan subir en formato .PDF y si el programa recibe por ejemplo un .doc tire un error.

¡Muchas gracias de antemano!

Re: Limitar extensión de archivo al hacer UPLOAD

NotaPublicado: 2019-08-30 11:00 @500
por explorer
Bienvenido a los foros de Perl en Español, alvilazaro.

En la línea 5 recibes el nombre del archivo. Solo tienes que aplicarle una expresión regular para saber si acaba o no en la extensión que quieres.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($filename =~ /[.]pdf$/i) {
  2.     # todo correcto
  3. }
  4. else {
  5.     # algo va mal
  6. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Limitar extensión de archivo al hacer UPLOAD

NotaPublicado: 2019-08-30 12:33 @564
por alvilazaro
¡Funcionó! ¡Muchísimas gracias! :D