Foros del Web » Programando para Internet » PHP »

implementacion de rename en form de upload

Estas en el tema de implementacion de rename en form de upload en el foro de PHP en Foros del Web. Hola compañeros! Estoy consultandolos es enta oportunidad puesto que intento aprender php y pese a un libro en mano y buscar en php.net, no entiendo ...
  #1 (permalink)  
Antiguo 19/10/2005, 17:55
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires
Mensajes: 220
Antigüedad: 19 años, 1 mes
Puntos: 0
Sonrisa implementacion de rename en form de upload

Hola compañeros!

Estoy consultandolos es enta oportunidad puesto que intento aprender php y pese a un libro en mano y buscar en php.net, no entiendo aun como implementar lo que quiero hacer.

Tengo este code dentro de un htlm y funciona muy bien.
Código PHP:
if($REQUEST_METHOD<>"POST"){
?>
              <br>
              <p>&nbsp;</p>
              <p><span class="style2">Seleccione el archivo que desea 

guardar 
                en el servidor </span></p><p>&nbsp;</p>
<form name="archivos" method="post" action="index.php" enctype="

multipart/form-data" target="_self">

<input type="file" name="archivo1">
<input type="submit" name="enviar" value="Subir">
</form>

<?
   
}
    else{
    
$directorio="/home/public_html/";
    
copy ($archivo1,$directorio.$archivo1_name);
    echo  
'<br><p><span class="style2"><b>Reporte del sistema:</

b><br><br>'
"Su archivo: <b>".$archivo1_name."</b>, fué subido al 

servidor con éxito.<br><br><b>Verifíquelo clickeando ver todos sus 

archivos</b>"
.'</span></p>'
   }
?>
-----

Lo que trato de saber es como implementar en este la funcion rename, para que cualquier archivo que suba reciba un nombre como ser File_1, File_2, File_3 y asi sucesivamente.

Los ejemplos que he visto solo me enseñan como renombrar un archivo en particular y lo que me interesaria aprender a hacer seria que cualquier archivo que voy subiendo reciba un nombre correlativo.

Si pueden decirme como, se los agradeceria.

Saludos
__________________
Aprender trae dolores de cabeza...Enseñar, satisfacción :pensando:

Última edición por Cluster; 19/10/2005 a las 18:31
  #2 (permalink)  
Antiguo 19/10/2005, 18:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Parece que el libro que tienes en tus manos es de una edición bastante antigüa:

* No debes usar variables externas como globales; ejemplo cuando usas $REQUEST_METHOD o accedes a las variables de tu formulario en el script que las recibe.

Usa los arrays supergloables: $_SESSION, $_POST .. etc ...

Al respecto te recomiendo la lectura de esta FAQ:
http://www.forosdelweb.com/showthrea...989#post238989

* El archivo que subes por tu formulario HTML y campo "file" .. su proceso está tambien anticuado y no es seguro. Debes usar en lugar de copy() la función move_uploaded_file() y en lugar de $archivo1_name .. usar el array $_FILES

Más información al respecto:
http://www.php.net/manual/en/features.file-upload.php

Por suerte, con las condiciones de configuración de PHP que usas en tu servidor de pruebas .. ese código funciona. Pero, si tocas con un servidor con "register_globals" a OFF (como es muy común hoy por hoy) no te funcionará.

------------------------------

Sobre tu problema concreto ...

Si tu quieres generar un nombre de archivo que recibirá el archivo que subistes (descartando el suyo original), donde dices que tienes cierto patrón que se basa en el nombre de los archivos que puedas tener en ese directorio donde suben tus archivos .. tendrás que primeramente: leer los archivos que tiene ese directorio para detectar tu patrón.

Para leer los archivos de un directorio .. puedes usar:
Funciones para trabajar con directorios ...
www.php.net/dir

Cuando leas tus archivos .. puedes ir "parseando" tu nombre de archivo, quedandote con la parte derecha que va despues de tu "_" que es el n° que tu generas .. ahí lo llevas a un array y de ahí ordenas el array en modo descendente para quedarte con el último elemento de ese array .. Ese elemento dirá el "n°" del últimio archivo generado .. suma 1 y tendrás el siguiente para componer tu "file_".$numero_generado y así darle nombre a tu archivo al usar move_uploaded_file()

De esta forma generaríamos una especie de "numero autoincremental" .. si eliminas un archivo .. el conteo seguría desde el último mayor ... (faltaría algo más de lógica para el comienzo .. algo tipo "si no hay archivos" .. nombre por defecto "file_1" y desde ahí operaría el resto de la lógica)

Para todo esto te hará falta:
www.php.net/explode
www.php.net/array

(también podrias tener un archivo .txt simple para llevar ahí el conteo .. eso es más sencillo de implementar pero plantea el problema cuando borras un archivo .. si no actualizas ese .txt con tu contador quedará el desastre de nombres ..)

Un saludo,
  #3 (permalink)  
Antiguo 20/10/2005, 06:23
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires
Mensajes: 220
Antigüedad: 19 años, 1 mes
Puntos: 0
Bueno Cluster..

Sinceramente me dejas en claro que no tengo muy buen material de apoyo. Lo venia notando dado que muchas cosas que ahi encontraba respetan en poco las estructuras que encuentro por aqui o en sitios como mencionas. Pueden haber varias formas de hacer las cosas pero la que venia siguiendo atenta con todo el resto.

Gracias por tus recomendaciones, es muy importante comenzar por lo basico pero versiones tan lejanas solo logran confundir.

Muy agradecido por todo el tiempo que invertiste en apoyar mi consulta amigo.

Gracias
__________________
Aprender trae dolores de cabeza...Enseñar, satisfacción :pensando:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:25.