Foros del Web » Programando para Internet » PHP »

Cambiar nombre de archivo con PHP?

Estas en el tema de Cambiar nombre de archivo con PHP? en el foro de PHP en Foros del Web. Hola buenas a todos los del foro no se si me pueden ayudar con mi problema la verdad es que soy novato con php y ...
  #1 (permalink)  
Antiguo 28/02/2014, 07:09
 
Fecha de Ingreso: diciembre-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Cambiar nombre de archivo con PHP?

Hola buenas a todos los del foro no se si me pueden ayudar con mi problema la verdad es que soy novato con php y queria hacer lo que dice el titulo cambiar el nombre de las imagenes de una galeria lo que hize fue:

archivo.php:
Código:
<FORM METHOD="post" ACTION="prueba.php">
<?php
    $directory="galeria";
    $dirint = dir($directory);
    while (($archivo = $dirint->read()) !== false)
    {
        if (eregi("gif", $archivo) || eregi("jpg", $archivo) || eregi("png", $archivo)){
            $anterior =  $archivo;
			echo "<input type='hidden' value='$anterior' name='anterior' id='anterior1'>";			
			$archivo =  str_replace(".jpg","",$archivo);
			echo "<input type='text' value='$archivo' name='Accion' id='Accion1'>";
			echo "<input type='submit' value='Enviar datos' name='enviar'> "; 
        }
    }
    $dirint->close();
?>



</FORM>
prueba.php:
Código:
<?php  
$accion = $_POST['Accion']; 
$anterior = $_POST['anterior']; 
if (rename ("galeria/$anterior","galeria/$accion.jpg")) {
    echo "el nombre del fichero ha sido cambiado\n";
} else {
    echo "Se ha producido un error al intentar cambiar el nombre\n";
} 
if (rename ("galeria/thumb/$anterior","galeria/thumb/$accion.jpg")) {
    echo "<br><br>el nombre del thumb ha sido cambiado\n";
} else {
    echo "<br><br>Se ha producido un error al intentar cambiar el thumb\n";
}
?>
hasta ahi me salio bien pero solo si tengo una imagen en la carpeta galeria y si tengo mas de una imagen no me deja cambiar el nombre a todas.

Bueno mi problema es ese estaria muy agradecido si me pueden ayudar a solucionarlo.

Gracias
  #2 (permalink)  
Antiguo 01/03/2014, 16:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Cambiar nombre de archivo con PHP?

1- Todas las etiquetas HTML y sus atributos deben escribirse en minúscula; esto no te va a ayudar para renombrar, pero sí para evitarte problemas futuros.

2- Las funciones ereg son obsoletas y se recomienda usar preg en su lugar; sin embargo, tampoco es tan recomendable usar expresiones regulares para cosas que se pueden solucionar fácilmente.

Obtener y comparar extensión de un archivo:
Código PHP:
Ver original
  1. $extensiones = array('gif', 'jpg', 'png'); // Agrega las que necesites, sin punto
  2.  
  3. // Dentro del while, obtén la extensión del archivo:
  4. $ext = end(explode('.', $archivo));
  5.  
  6. // Verifica si es una imagen:
  7. if(in_array($ext, $extensiones)) {
  8.         // Aquí creas los inputs necesarios
  9. }

3- Revisa el HTML, viendo el código fuente en el navegador, notarás que tienes muchos inputs con el mismo nombre y diferente valor; al procesar el formulario, cada nuevo campo reemplazará al anterior y es por eso que funciona solo con un archivo.

Maneja todos los campos como array:

Código PHP:
Ver original
  1. <input type="hidden" name="anterior[]" value="<?php echo $anterior; ?>" />
  2. <input type="text" name ="nuevo[]" value="" />

No es necesario especificar una ID para los inputs, menos si esa ID se va a repetir; tampoco es necesario tener un submit para cada archivo, ese debe quedar fuera del while, para que puedas renombrar todos fácilmente.

Continuará... (Voy a comer )
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/03/2014, 18:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Cambiar nombre de archivo con PHP?

Continuación

Finalmente, en tu PHP recorres todos los campos para saber si hay que cambiar nombre de uno o más archivos:

Código PHP:
Ver original
  1. foreach($_POST['nuevo'] as $i => $nuevo_nombre) {
  2.       // $i es la posición de cada elemento, tanto en nuevo como en anterior
  3.       if(trim($nuevo_nombre) != '') {
  4.             // Hay que hacer una validación antes de renombrar
  5.             // para ver que se conserve la extensión original
  6.             // y que no exista otro archivo con ese nombre
  7.             // Luego de todo lo anterior
  8.             rename("ruta/{$_POST['anterior'][$i]}", "ruta/$nuevo_nombre");
  9.       }
  10. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: nombre
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 14:18.