problemas para subir imagen a directorio
Publicado por martin (16 intervenciones) el 24/11/2019 16:08:36
hola a todos, quiero hacer lo siguiente pero no me sale, tengo un form:
este form lo que hace es pedir un nombre y una imagen, al dar clik pasa al script de php:
lo que hago aca es tomar los datos que llegan y cargar el nombre del input en la bd, despues hago un select para tomar ese nombre junto con el id para asi crear la carpeta, lo que quiero hacer y no me esta saliendo hasta ahora (seguramente algo tengo mal y no lo veo) es procesar la imagen y antes de copiarla al directorio recien creado, poder cambiarle el nombre original al de perfil, pero no le encuentro la vuelta de como hacerlo hasta el momento
desde ya muchas gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action="include/cargar.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<div class="col-sm-6">
<input type="text" class="form-control" name="nombre" placeholder="Nombre" required>
</div>
</div>
<div class="form-group text-center col-8">
<span>Foto de perfil</span>
<input type="file" class="form-control-file" name="perfil">
</div>
<div class="form-group row">
<div class="col-sm-10 text-center">
<button type="submit" class="btn text-white" name="crear">Publicar</button>
</div>
</div>
</form>
este form lo que hace es pedir un nombre y una imagen, al dar clik pasa al script de php:
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
<?php
include('cnx.php');
$nombre = mysqli_real_escape_string($cnx, $_POST['nombre']);
$insert = "INSERT INTO `publicaciones` (`nombre`) VALUES ('$nombre')";
$carga = mysqli_query($cnx, $insert);
$sql = "SELECT * FROM publicaciones";
$query = mysqli_query($cnx, $sql);
while ($r = mysqli_fetch_array($query)) {
//ruta donde voy a guardar la imagen
$carpeta = "../img/".$r['id']."_".$r['nombre']."/";
//me fijo si no existe carpeta para crearla
if (!file_exists($carpeta)) {
mkdir($carpeta, 777);
//tomo datos de la imagen a subir
$nombre = $_FILES['perfil']['name'];
$nombrer = strtolower($nombre);
//extraigo la extension de la imagen
$explode = explode('.', $nombrer);
$extension = array_pop($explode);
$cd=$_FILES['perfil']['tmp_name'];
//reemplazo el nombre de la imagen a "perfil" mas la extension
$destino = str_replace($nombrer, "perfil", $nombrer).".".$extension;
//subo la imagen a la carpeta creada
$resultado = copy($destino, $carpeta);
}
echo $r['id']." ".$r['nombre']." ".$carpeta,$destino."<br>";
}
?>
lo que hago aca es tomar los datos que llegan y cargar el nombre del input en la bd, despues hago un select para tomar ese nombre junto con el id para asi crear la carpeta, lo que quiero hacer y no me esta saliendo hasta ahora (seguramente algo tengo mal y no lo veo) es procesar la imagen y antes de copiarla al directorio recien creado, poder cambiarle el nombre original al de perfil, pero no le encuentro la vuelta de como hacerlo hasta el momento
desde ya muchas gracias
Valora esta pregunta


0