PHP - Renombrar archivos

 
Vista:
sin imagen de perfil

Renombrar archivos

Publicado por Nelson (2 intervenciones) el 28/01/2023 17:19:15
Hola, necesito subir varias imágenes y que al subirse se renombren como img1 hasta el 20, he creado un
1
for
que en la función
1
rename
sustituya estos valores pero no se lleva a cabo el incremento, si sube una imagen la nombra como img20, por ejemplo la siguiente imagen toma el mismo nombre y en consecuencia esta sustituyendo la anteriorReemplace este texto
por ahora tengo esto...

<head>
<meta charset="utf-8">
<title>Subir una o varias imagenes al servidor</title>
</head>
<body>
<?php
# contador para renombrar
for ($re =" "; $re<=10;) $re++;

# definimos la carpeta destino
$carpetaDestino="fotos/";

# si hay algun archivo que subir
if($_FILES["archivo"]["name"][0])
{
# recorremos todos los arhivos que se han subido

for($i=0;$i<count($_FILES["archivo"]["name"]);$i++)
{

# si es un formato de imagen
if($_FILES["archivo"]["type"][$i]=="image/jpeg" || $_FILES["archivo"]["type"][$i]=="image/pjpeg" || $_FILES["archivo"]["type"][$i]=="image/gif" || $_FILES["archivo"]["type"][$i]=="image/png")
{

# si exsite la carpeta o se ha creado
if(file_exists($carpetaDestino) || @mkdir($carpetaDestino))
{
$origen=$_FILES["archivo"]["tmp_name"][$i];

$destino=$carpetaDestino.$_FILES["archivo"]["name"][$i];

# usar el FOR para renombar
//rename($origen, "$carpetaDestino/img$re.jpeg");

# movemos el archivo
if(@move_uploaded_file($origen, $carpetaDestino))
{
echo "<br>".$_FILES["archivo"]["name"][$i]." movido correctamente";
}else{
echo "<br>No se ha podido mover el archivo: ".$_FILES["archivo"]["name"][$i];
}
}else{
echo "<br>No se ha podido crear la carpeta: up/".$user;
}
}else{
echo "<br>".$_FILES["archivo"]["name"][$i]." - NO es imagen jpg";
}
}
}else{
echo "<br>No se ha subido ninguna imagen";
}
?>

<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post" enctype="multipart/form-data" name="inscripcion">
<input type="file" name="archivo[]"multiple> <br>

<input type="submit" value="Enviar" class="trig">
</form>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de d4redevilx
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Renombrar archivos

Publicado por d4redevilx (157 intervenciones) el 29/01/2023 23:59:18
Hola, te dejo un ejemplo básico de como podrías resolverlo.
Hay muchas cosas que se pueden agregar y mejorar, pero eso lo dejo para que tu lo hagas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Subir una o varias imágenes al servidor</title>
</head>
<body>
    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            # definimos la carpeta destino
            $carpetaDestino='fotos/';
            !file_exists($carpetaDestino) && mkdir($carpetaDestino, 0644);
 
             // si ya existen imágenes, comienza el contador a partir de la ultima, suponiendo que son sucesivos.
             // Faltaría agregar que solo tome en cuenta imagenes.
            $archivos = scandir($carpetaDestino);
            $cantidadDeArchivos = count($archivos) - 2; // no toma en cuenta el '.' y el '..'
            $x = $cantidadDeArchivos == 0 ? 1 : $cantidadDeArchivos + 1;
 
            for($i=0; $i<count($_FILES['archivo']['name']); $i++) {
                $nombreArchivo = $_FILES['archivo']['name'][$i];
                $ext = explode('.', $nombreArchivo);
                $ext = $ext[count($ext)-1];
                $tipoArchivo = $_FILES['archivo']['type'][$i];
 
                // comprueba el tipo de archivo
                if (!in_array($tipoArchivo, array('image/jpeg', 'image/pjpeg', 'image/gif', 'image/png'))) die('No es una imágen valida');
 
                $origen=$_FILES['archivo']['tmp_name'][$i];
                $nuevoNombreArchivo = $x.'.'.$ext;
                $destino=$carpetaDestino.$nuevoNombreArchivo;
 
                if(move_uploaded_file($origen, $destino)) {
                    echo '<br>'.$_FILES['archivo']['name'][$i]. ' movido correctamente con el nombre ' . $nuevoNombreArchivo;
                } else {
                    echo '<br>No se ha podido mover el archivo: '.$_FILES['archivo']['name'][$i];
                }
 
                $x++;
            }
        }
    ?>
    <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post" enctype="multipart/form-data" name="inscripcion">
        <input type="file" name="archivo[]"multiple> <br>
        <input type="submit" value="Enviar" class="trig">
    </form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Renombrar archivos

Publicado por Nelson (2 intervenciones) el 30/01/2023 17:04:54
En esencia funciona pero aunque al subir las imágenes toman el numero del contador es decir 1,2,3,4,5, no esta tomando el nombre "img.1,img.2"img.3 etc... debo modificar el contador gracias por resolver mi duda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar