Saludos.
Yo uso este código mucho y me ha funcionado de mil maravillas.
Código PHP:
//Recibo Ficheros - Presupuesto 1
$n_file1 = $_FILES['file1']['name'];
$n_file1_tmp = $_FILES['file1']['tmp_name'];
$n_file1_size = $_FILES['file1']['size'];
$n_file1_type = $_FILES['file1']['type'];
//DEBUG DE SUBIDA DE FICHERO 1
/* echo $n_file1."<br />";
echo $n_file1_tmp."<br />";
echo $n_file1_size."<br />";
echo $n_file1_type."<br />"; */
//Validacion de existencia de fichero 1
if ($n_file1 == '') // SIN FICHERO
{
$n_file1 = "";
$sin_file1 = "TRUE";
} else {
$n_file1 = renombrar($n_file1); // CON FICHERO
$sin_file1 = "FALSE";
$fecha_pp1 = date("Y-m-d");
}
//Dirección donde se guardaran los archivos cargados
$upload_ficheros = "ficheros/pdfs/";
//Mover direccion temporal de FILE 1 a DIRECCION FINAL en ficheros/pdfs/
if ($sin_file1 != "TRUE")
{
$n_path_file1 = $upload_ficheros . $n_file1;
$resultado1 = move_uploaded_file($n_file1_tmp, $n_path_file1);
if (!$resultado1)
{
echo "ERROR: El archivo no pudo ser cargado al servidor";
exit;
}
La función para renombrar archivos es la siguiente:
Código PHP:
//Separa nombre de extension desde el punto. Luego toma extension le añade un punto y renombra con valor rand el nombre del fichero.
//permitiendo subir archivos existentes para otras secciones sin reescribir ficheros en servidor.
function renombrar($nombre_foto)
{
$random=mt_rand(1,15000);
$ext = substr(strrchr($nombre_foto,"."),1);
$xext = ".".$ext;
$n = basename($nombre_foto, $xext);
$nombre_foto = $n . "-" . $random . $xext;
return $nombre_foto;
}
Yo renombro los archivos al momento de subirlos, en caso que hayan varias versiones del mismo pero con distintas fechas. Así puedo tener mi sistema propio de SVN, evito que un usuario sobreescriba algo por error y también puedo controlar extensiones especiales en caso de separar archivos por secciones.
Suerte!
Silla!