Foros del Web » Programando para Internet » PHP »

Cambiar nombre a archivo con PHP

Estas en el tema de Cambiar nombre a archivo con PHP en el foro de PHP en Foros del Web. Buenas, la duda que tengo es la siguiente: Tengo que subir unas imagenes a una carpeta peeero...cuando subo las imagénes tengo que cambiarle el nombre ...
  #1 (permalink)  
Antiguo 10/02/2009, 16:45
Avatar de danico90  
Fecha de Ingreso: febrero-2009
Ubicación: San José, Costa Rica
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 13
Sonrisa Cambiar nombre a archivo con PHP

Buenas, la duda que tengo es la siguiente:

Tengo que subir unas imagenes a una carpeta peeero...cuando subo las imagénes tengo que cambiarle el nombre al archivo. Por ejemplo, si ya existe una imagen que se llama casa.jpg, la siguiente imagen que suba debe llamarse casa2.jpg.
Alguien me podria decir algun metodo que exista o darme una idea.

Gracias.

  #2 (permalink)  
Antiguo 10/02/2009, 16:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cambiar nombre a archivo con PHP

existe la función rename()

http://php.net/rename


¿¿ya has revisado el manual de PHP???


puedes hacer un ciclo para determinar un índice extra....

Código PHP:
$bar 'ya_existo';
$num 0;

while (
is_file("foo/$bar"))
{
  
$bar $bar . (++$num);
}

echo 
$bar// OK


// o hazlo directo...
echo $bar rand(); 
la verdad es cuestión de creatividad ya que maneras, hay muchas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/02/2009, 17:06
Avatar de danico90  
Fecha de Ingreso: febrero-2009
Ubicación: San José, Costa Rica
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Cambiar nombre a archivo con PHP

Gracias por responder.

Lo hice de esta manera:
Código PHP:
function uploadfotoChangeName($_FILES){//sube el archivo y cambia el nombre
    
if(is_uploaded_file($_FILES['file']['tmp_name'])){
    
$fileName=$_FILES['file']['name'];
    
$uploadDir="upload/";
    
$uploadFile=$uploadDir.$fileName;    
    
$num 0;
    
$name $fileName;
    
$extension end(explode('.',$fileName));
    
$onlyName substr($fileName,0,strlen($fileName)-(strlen($extension)+1));
    while(
file_exists($uploadDir.$name)){
        
$num++;            
        
$name $onlyName."".$num.".".$extension;
    }
    
$uploadFile $uploadDir.$name;
    
move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile);
    return(
$name);    
    }    

Tiene un return porq necesitaba q me devolviera el nombre para meterlo a la base de datos.

Ahora voy a explicarlo un poco , por si le sirve a alguien...

Primero recibe como parametro un $_FILES.

Luego valido si se puede subir:
Código PHP:
if(is_uploaded_file($_FILES['file']['tmp_name'])){ 
Las variables:
Código PHP:
$fileName=$_FILES['file']['name'];//nombre del archivo q voy a subir
$uploadDir="upload/";                  //directorio donde lo voy a subir
$uploadFile=$uploadDir.$fileName;//default por si no cambia el nombre
$num 0;          //contador para ponerle numero al archivo
$name $fileName//declaro $name para conservar $fileName 
Separo la extension y el nombre:
Código PHP:
//saca la extension sin el punto(Ej:"jpg"), el end() es para agarrar el ultimo punto en caso d q el nombre contenga mas de 1 punto
$extension end(explode('.',$fileName));    
//saca el nombre sin la extension(Ej:"archivo")
$onlyName substr($fileName,0,strlen($fileName)-(strlen($extension)+1)); 
El ciclo:
Código PHP:
while(file_exists($uploadDir.$name)){//revisa si ya existe el archivo
    
$num++;        
     
//arma el archivo (Ej:"archivo1.jpg","archivo2.jpg")    
    
$name $onlyName."".$num.".".$extension;

El final:
Código PHP:
//junta el nombre del archivo con el directorio donde lo va a subir 
$uploadFile $uploadDir.$name;
//sube el archivo, notese que en el primer parametro entra el nombre el archivo q se va a subir y el segundo parametro cambia el nombre para renombrarlo en el directorio donde se va a subir
move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile); 
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:37.