Dom Jun 22, 2008 5:52 pm
|
 |
Gourbette
Perlero Nuevo

|
Registrado: 22 Jun 2008
Mensajes: 2
|
|
| Perl: Subir archivo con identificador |
|
|
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. |
|
|
|

Dom Jun 22, 2008 6:41 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 474
Ubicación: Frente al monitor
|
|
|
|

Dom Jun 22, 2008 6:51 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4034
Ubicación: Valladolid, España
|
|
| Re: Perl: Subir archivo con identificador |
|
|
| 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. |
|

Powered by phpBB © 2001, 2005 phpBB Group
|