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
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
, 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);