Evitar la sobre escritura de archivos cargados con php
Pues aquí dejo un segmento de código que me parece algo sencillo pero puede ser útil a otros (además de que no compromete la confidencialidad de mis proyectos laborales) y sirve únicamente para renombrar un archivo que se sube por formulario web para evitar la sobrescritura; eso se hace agregando una serie numérica entre el nombre del archivo y su extensión:
<?php
/**
* @author Javier B. Camacho Martínez
* @copyright DGB - Agosto 2009
*/
$fileSize = $_FILES['fileUploaded']['size'];
$fileName= $_FILES['fileUploaded']['name'];
$fileType = $_FILES['fileUploaded']['type'];
$fileTmp = $_FILES['fileUploaded']['tmp_name'];
// Reemplazar espacios y signos de puntación del nombre de archivo por guiones bajos
$fileName= preg_replace('/[^a-z0-9-_\-\.]/i','_',$fileName);
// Obtener la extensión del archivo (a veces resulta útil saberlo)
$extFile = substr($fileName,-4,4); // mantiene desde -4 a 4 caracteres: .txt
// Obtener el puro nombre del archivo (sin la extensión)
$fileName = substr($fileName,0,-4); // mantiene desde 0 hasta -4 caracteres: carta_a_los_reyes_magos
$uploadsFolder = './uploads/';
// Si no existe el directorio para almacenar los archivos, crearlo con permisos 777
!is_dir($uploadsFolder) ? mkdir($uploadsFolder,0777) : null;
// Antes de mover el archivo al directorio, prevenir la sobre escritura
if(file_exists($uploadsFolder.$fileName.$extFile)){
$counter = 1;
while(@file_exists($uploadsFolder.$fileName.'_'.$counter.$extFile)) { $counter++; }
// Si existe se renombra a con un infijo numérico: carta_a_los_reyes_magos_2.txt
$fileName = $fileName.'_'.$counter.$extFile;
}
// Si no existe, no se renombra y queda tal cual: carta_a_los_reyes_magos.txt
else{
$fileName = $fileName.$extFile;
}
// Mover el archivo a su nuevo hogar:
$statusMovedFile = move_uploaded_file($fileTmp,$uploadsFolder.$fileName);
// Verificación final
echo 'el status es: '.$statusMovedFile;
?>





hola es un plaser entrar a tu web
olandinaalmendarez
13 Agosto 2009 a 3:50 pm
Gracias por tus palabras.
¡Un abrazo!
vaLar
13 Agosto 2009 a 4:21 pm