Página 1 de 1

Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 07:37 @359
por alvilazaro
¡Hola nuevamente! Tengo este código para subir un archivo al servidor:

$CGI::POST_MAX = 1024 * 5000;
my $upload_dir = "../../certificados/";
my $query = new CGI;
my $filename ="";
my $filename =$query->param("archmov");
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
$mon += 1;
my $datetime = sprintf "%02d%02d%04d%02d%02d%02d", $mon, $mday, $year, $hour, $min, $sec;

my $upload_filehandle = $query->upload("archmov");

if ($filename =~ /[.]pdf$/i) {

open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
binmode UPLOADFILE;

while ( <$upload_filehandle> )
{
print UPLOADFILE;
}

close UPLOADFILE;
}


¡Funciona perfecto! Pero quiero que tanto en la base de datos como en el servidor donde se guardan, se guarde así:

Por ejemplo, el archivo que cargan se llama certificado23.pdf pero yo quiero que se renombre y en la base de datos y carpeta del servidor se guarde así: tipocertificado+idarticulo+ un id que se genere aleatoriamente.

¿Cómo podría llevar a cabo esto? ¡Gracias!

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 09:14 @426
por explorer
¿Modificando la variable $filename antes del open()?

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 10:19 @472
por alvilazaro
No entendí, @explorer, perdón.

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 10:47 @491
por explorer
Que digo que después de

if ($filename =~ /[.]pdf$/i) {

es cuando puedes modificar $filename para que tenga el aspecto que quieres que tenga, para que al hacer el open se cree un archivo con ese nombre.

Lo que no sabemos es de dónde vas a sacar los valores de tipocertificado e idarticulo. Lo de generar un id aleatorio es fácil con la función rand(). Pero de lo demás, no sabemos mucho.

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 11:04 @503
por alvilazaro
$filename = $v_tipo_certificado+$id_buque_input+rand();


$v_tipo_certificado y $id_buque_input son variables que traigo de arriba, hasta ahi todo bien. pero me los graba sin .pdf, los archivos.

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 12:08 @547
por explorer
$filename = $v_tipo_certificado . $id_buque_input . rand() . '.pdf';

Recuerda que este es el foro de Intermedio...

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 12:34 @565
por alvilazaro
¡Excelente! Me funcionó. ¿Esto debería ponerlo en Avanzado o Principante?

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 13:34 @607
por explorer
Donde quieras. Según donde lo pongas, así serán las respuestas.

Re: Renombrar archivo al subirse al servidor

NotaPublicado: 2019-09-04 13:48 @617
por alvilazaro
¡¡¡Muchas gracias!!!