¿Cómo puedo guardar una imagen en un directorio con php?
Programador novato aquí. Estoy haciendo un formulario y mi profesor me pidió que suba una imagen desde cualquier ubicación de mi computadora y la guarde en un directorio específico (también de mi computadora). El código que tengo solo funciona si la imagen está en la misma ubicación que mi script. Espero que puedas ayudarme.
Nota: También tengo que guardarlo en la base de datos porque lo voy a usar para hacer un PDF.
HTML:
<html>
<head>
</head>
<form method="post" action="IConductores.php">
<p></p>
<label>Foto</label>
<input type="file" id="Foto" name="Foto">
<input type="submit" id="Enviar" name="Enviar">
</form>
</html>
IConductores.php:
<?php
$Rfc = $_POST['Rfc'];
$Foto = $_POST['Foto'];
$SQL = "INSERT INTO Conductores VALUES ('$Rfc', '$Foto');";
$destdir = 'ImagenesPerfil/'; // ruta de destino
$img=file_get_contents($Foto);
file_put_contents($destdir.substr($Foto, strrpos($Foto,'/')), $img);
davy.ai
Hay un par de problemas con el código actual proporcionado. En primer lugar, la variable global
$_POST
sólo puede recuperar datos que hayan sido enviados a través del método HTTP POST, y no puede manejar archivos. Para manejar archivos, debes usar en su lugar la variable global$_FILES
.En segundo lugar, la variable
$Foto
en el script de PHP debe contener la ruta real del archivo subido en el servidor, no sólo su nombre. Para recuperar esto, necesitas usar la variable global$_FILES
y acceder a su propiedadtmp_name
.Por último, para guardar la imagen en la base de datos, necesitas leer realmente el contenido del archivo e insertarlo como un blob binario en la base de datos, en lugar de sólo almacenar el nombre del archivo.
Con eso en mente, aquí hay un fragmento de código actualizado que debería funcionar:
HTML:
IConductores.php:
Aquí hay una breve explicación de los cambios:
enctype="multipart/form-data"
al elemento del formulario, lo que permite subir archivos.$_FILES['Foto']
en lugar de$_POST['Foto']
.$destdir
.