Foros del Web » Programando para Internet » PHP »

cambiar nombre de archivo al subir

Estas en el tema de cambiar nombre de archivo al subir en el foro de PHP en Foros del Web. Hola a todos. Llevo un tiempo probando una cosa que es la siguiente: en mi página permito a los usuarios subir fotos, y quiero que ...
  #1 (permalink)  
Antiguo 14/02/2006, 11:39
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 2 meses
Puntos: 0
cambiar nombre de archivo al subir

Hola a todos. Llevo un tiempo probando una cosa que es la siguiente: en mi página permito a los usuarios subir fotos, y quiero que al subirse el nombre del archivo cambie para evitar que se repitan fotos con el mismo nombre. Y estaba pensando en poner un numero aleatorio entre el final del nombre y .jpg , que saliera algo como flor23425.jpg
El código que tengo es este, consegui quitar tildes y demas que me molestaban pero esto del numero aleatorio no:

Código PHP:
$photoname strtolower(str_replace(" ","_",trim($_FILES['photo']['name'])));
        
$photoname strtr($photoname"àáâãäåèéêëìíîïòóôõöùúûüñÀÈÌÒÙÑ""aaaaaaeeeeiiiiooooouuuunAEIOUN");
        if(
$photoname!=""){ $oPhoto_Gallery->uploadFile($_FILES['photo']['tmp_name'],$path["docroot"]."_files/photogallery",$photoname); } 
Gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 12/05/2006, 08:25
Avatar de :_DaMMiaN_:  
Fecha de Ingreso: agosto-2005
Ubicación: En una shell
Mensajes: 15
Antigüedad: 18 años, 8 meses
Puntos: 0
ayuda

Solo debes generar el numero aleatorio y pegarlo al nuevo nombre

ej:

$numero=rand(1000,2000); //esto generara un numero entre 1000 y 2000
$photoname = split(".",$photoname)

$new_photonme = $photoname[0]."".$numero.".".$photoname[1];
__________________
El que al mundo vino y no uso Linux... a que chucha vino

WWW.OSMWEB.CL
  #3 (permalink)  
Antiguo 12/05/2006, 08:42
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 2 meses
Puntos: 5
Yo justo ayer hice algo similar, solo que no use la funcion rand(), sino verifique la existencia del archivo, solo hice un bucle while que empiece en 1 (en caso de existir un archivo con el nombre "tal.jpg") y me cambien el nombre al archivo como tal1.jpg.. y asi sucesivamente si sigue encontrando un archivo con el mismo nombre me vaya cambiando a 2,3,4, etc.. hasta que encuentre un espacio libre...

Saludos..
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #4 (permalink)  
Antiguo 12/05/2006, 10:23
Avatar de chiviwalker  
Fecha de Ingreso: marzo-2004
Ubicación: Alicante
Mensajes: 55
Antigüedad: 20 años, 1 mes
Puntos: 0
Aportando otra solucion con algo parecido que he hecho, es que como nombre de la imagen recupero el id del usuario para darle nombre al archivo, de esta manera reconoceremos perfectamente de que usuario es cada imagen.

Un saludo
__________________
------------------------------------------
www.inetmarket.es
  #5 (permalink)  
Antiguo 12/05/2006, 12:04
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
yo pienso como chiviwalker. Yo le daria el nombre del usuario y un timedate para que no sean iguales.
  #6 (permalink)  
Antiguo 12/05/2006, 16:03
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 2 meses
Puntos: 5
Claro, esa es una interesante solucion, para cuando los archivos que se suban lo hagan los usuarios, pero en mi caso, yo estoy haciendo un sistema de administracion del site, es decir, el administrador del sitio es el que sube (es el unico usuario)...

Pero de todas maneras, lo que ustedes dicen es muy correcto..

saludos!
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #7 (permalink)  
Antiguo 12/05/2006, 23:00
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Yo tengo esto, es bastante sencillo, y se puede adaptar para sessiones o usuarios sin session:


Código PHP:
if(is_uploaded_file($_FILES['f_pm_upload']['tmp_name'])) {

        
/** Cambiamos el nombre del archivo **/

    
$new_filename $_SESSION['user']."-".$_FILES['f_pm_upload']['name'];

    
$_FILES['f_pm_upload']['name'] = $new_filename;

        
/* Done*/ 
Si lo que queres es, como dice Celcius, algo que no tiene relación con sessiones de usuario, podes aplicar el random como explica Damian. O una fecha... lo que más sea util... mismo un "unix time" con la funcion time(), ahi si que no vas a tener jamas un archivo repetido :)

Código PHP:
if(is_uploaded_file($_FILES['f_pm_upload']['tmp_name'])) {

        
/** Cambiamos el nombre del archivo **/

        // $id = time(); // Este solo si querés algo muy riguroso.
        
$id rand(109000);

    
$new_filename $id."-".$_FILES['f_pm_upload']['name'];

    
$_FILES['f_pm_upload']['name'] = $new_filename;

        
/* Done*/ 
Weno eso es todo... lo que no incluye esta funcion es el desarmar el nombre de archivo en file.extension, pero si te sirva, tal vez sea hasta más rapido.

Saludos
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 22:03.