Lenguaje PHP

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

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad