Validar input type file Vacío con PHP
Validar input type file Vacío con PHP. En el presente articulo detallaremos la solución para validar INPUT de tipo FILE que se envían vacío a través de un formulario HTML. Si estas desarrollando un formulario para cargar imágenes o para enviar datos a una base de datos, estas en el lugar correcto.
Si algún INPUT de tipo texto se suelen enviar vacío, esto no genera un error fatal, sino una advertencia en PHP.
Sin embargo, si el INPUT de tipo FILE suele presentarse errores e incluso no registrar en MySQL.
Resumiendo.- Cuando envía algo con el input type texto no genera problemas. Pero si envías el inptut type file vacío no registra en base de datos y se trunca el envío:
¿Cómo validar input type file Vacío con PHP?
Si ha probado poniendo al input type file un value con la dirección de una imagen en blanco (value=»Imagenes/vacio.png») esto es poco probable que funcione, lo ideal sería colocar una dirección de imagen en la variable de inserción en la tabla MySQL.
Aquí les mostrare un simple formulario en HTML para cargar archivos y/o imágenes
<form action="publicar.php" method="POST" enctype="multipart/form-data">
<input type="text" id ="input" required placeholder="Su publicacion" name="publicacion">
<input type="file" name="imagen" />
<div id="avion2">
<button type="submit" name="publicar">
Enviar
</button>
</div>
</form>
Fichero publicar.php
Una vez que el formulario se envía, este archivo recibe todos los datos del formulario y los procesa, veamos el ejemplo.
if (isset($_POST['publicar'])){
$publicacion = $_POST['publicacion'];
$imagen = addslashes(file_get_contents($_FILES['imagen']['tmp_name']));
$query = "INSERT INTO publicaciones(publicacion, imagen) VALUES ( '$publicacion', '$imagen')";
$resultado = mysqli_query($conn, $query);
if (!$resultado){
die("Algo fallo, intente nuevamente.");
}
header("location: publicaciones.php");
}
La solución para validar INPUT FILE
La solución es verificar y/ comprobar si el input de tipo FILE está vacío o no. Por lo tanto, cuando se envía el formulario toda esa información se va a publicar.php que será el encargado de almacenar en la base de datos.
La verificación es muy sencilla y podemos aplicar una condiciona IF ELSE, veamos el ejemplo.
//validamos el campo imagen
if($_FILES['imagen']['name'] != ""){
$imagen = addslashes(file_get_contents($_FILES['imagen']['tmp_name']));
else{
$imagen = "";
}
Integración completa para validar INPUT FILE
A continuación, veremos el archivo publicar.php con la integración de la solución de validación de INPUT FILE.
if (isset($_POST['publicar'])){
$publicacion = $_POST['publicacion'];
//validamos el campo imagen
if($_FILES['imagen']['name'] != ""){
$imagen = addslashes(file_get_contents($_FILES['imagen']['tmp_name']));
else{
$imagen = "";
}
$query = "INSERT INTO publicaciones(publicacion, imagen) VALUES ( '$publicacion', '$imagen')";
$resultado = mysqli_query($conn, $query);
if (!$resultado){
die("Algo fallo, intente nuevamente.");
}
header("location: publicaciones.php");
}
Cargar archivos en servidor usando PHP
Por otro lado, si se desea almacenar los archivos adjuntos en el servidor web debemos de usar las siguientes líneas de código.
move_uploaded_file($url_temp, $url_target)
Esta simple función es encargada de subir los archivos al servidor web de una manera fácil y sencilla.
<?php
$file = $_FILES["myfile"]["name"]; //Nombre de nuestro archivo
$url_temp = $_FILES["fileTest"]["tmp_name"]; //Ruta temporal a donde se carga el archivo
//dirname(__FILE__) nos otorga la ruta absoluta hasta el archivo en ejecución
$url_insert = dirname(__FILE__) . "/archivos"; //Carpeta donde subiremos nuestros archivos
//Ruta donde se guardara el archivo, usamos str_replace para reemplazar los "\" por "/"
$url_target = str_replace('\\', '/', $url_insert) . '/' . $file;
//Si la carpeta no existe, la creamos
if (!file_exists($url_insert)) {
mkdir($url_insert, 0777, true);
};
//movemos el archivo de la carpeta temporal a la carpeta objetivo y verificamos si fue exitoso
if (move_uploaded_file($url_temp, $url_target)) {
echo "El archivo " . htmlspecialchars(basename($file)) . " ha sido cargado con éxito.";
} else {
echo "Ha habido un error al cargar tu archivo.";
}
?>
Conclusiones y recomendaciones de Validación INPUT FILE
Es muy importante validar formularios cuando los campos se envían vacíos y más aún cuando algún campo carga imágenes o archivos hacia el servidor o base de datos. Por lo tanto, la no validación puede generar errores e incluso no registrar en la base de datos.
Para evitar estos inconvenientes se debe validar estrictamente todos los campos a la hora de almacenar en base de datos.
Por último, podemos registrar el nombre de archivo en MySQL y almacenar el archivo en el disco del servidor