Como subir imagenes al servidor y restringir el tipo de archivo con PHP

Conocimiento es poder!

Como subir imagenes al servidor y restringir el tipo de archivo con PHP

Saludos, en el siguiente post muestro como subir imagenes o fotos al servidor con PHP y mostrar la información del archivo subido.

La imagen es almacenada en un directorio temporero (tmp_name) el cual se crea y se elimina automáticamente para verificar que todo esté bien antes subir la imagen por completo.

Luego si todo esta bien la función move_uploaded_file() mueve la imagen al directorio original, en este caso el directorio img.

Código HTML para el formulario:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>PHP Image Upload</title>
</head>

<body>
    <form action="upload_file.php" method="POST" enctype="multipart/form-data">
        <label>Seleccione una imagen:</label><br />
        <input type="file" name="userFile" />
        <input type="submit" name="submit" value="Upload" />
    </form>
</body>
</html>

Tienes que usar el atributo  enctype=’multipart/form-data’  para que el envío de la imagen funcione.

Código PHP:

<?php
//Tamaño y Formatos permitidos
if ((($_FILES["userFile"]["type"] == "image/gif")
|| ($_FILES["userFile"]["type"] == "image/jpeg")
|| ($_FILES["userFile"]["type"] == "image/jpg")
|| ($_FILES["userFile"]["type"] == "image/JPG")
|| ($_FILES["userFile"]["type"] == "image/pjpeg"))
&amp;&amp; ($_FILES["userFile"]["size"] < 1000000))
{
    //Manejo de error de archivo
    if ($_FILES["userFile"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["userFile"]["error"] . "";
    } else {    
    
    // Verifica si el archivo existe
    if (file_exists("img/" . $_FILES["userFile"]["name"]))
    {
        echo "El archivo: " . $_FILES["userFile"]["name"] . " ya existe. ";
    } else {
        move_uploaded_file($_FILES["userFile"]["tmp_name"], "img/" . $_FILES["userFile"]["name"]);
        
        echo "Archivo almacenado en: " . "img/" . $_FILES["userFile"]["name"] . "\n";
        
        $nombreArchivo = $_FILES["userFile"]["name"];
        
        // Muestra la imagen y la informacion del archivo subido       
        echo "<img src='img/$nombreArchivo'>";
        echo "Nombre: " . $_FILES["userFile"]["name"] . "<br />";       
        echo "Tipo: " . $_FILES["userFile"]["type"] . "<br />";
        echo "Tamaño: " . ($_FILES["userFile"]["size"] / 1024) . " Kb<br />";
        echo "Directorio Temporal: " . $_FILES["userFile"]["tmp_name"] . "<br />";
        }        
    }
} else {
    echo "Archivo invalido, Solamente archivos GIF, JPG y PNG son permitidos";
} 
?>

El código PHP comienza verificando si el tamaño y formato de la imagen seleccionada es el correcto y el permitido.

Si el usuario selecciona una extensión de archivo diferente a las permitidas y/o selecciona un archivo más grande de lo permitido se mostrará un mensaje de error diciendo “Archivo inválido, Solamente archivos GIF, JPG y PNG son permitidos.”

En este ejemplo el tamaño permitido es de 1 MB (1 millón de bytes).

Tags:

3 Responses

  1. Claudia V. says:

    Hola me gusto mucho tu tutorial, queria hacerte una pregunta. en el servidor local , en este caso para este ejemplo, como se llama la carpeta donde donde va a estar uploads, es decir donde se van a guardar las fotos

    Gracias, no me es muy claro esto

    Claudia Vasquez

    • velozity says:

      Hola Claudia espero que estes bien. Me alegra mucho que te haiga gustado el articulo. Pues cuando el usuario presiona el botón upload el código PHP crea un archivo temporal para verificar que no haya ningún error y que el archivo no es más grande del tamaño especificado, si todo esta bien la funcion “move_uploaded_file()” mueve el archivo temporal a la carpeta llamada “img” (ahí es donde se guardan las fotos). Esos nombre “temp_name” y la carpeta “img” puedes cambiarlos por los nombres que desees y la carpeta “img” si no existe, se crea automáticamente en el servidor. Espero haber resuelto tu duda. Lindo día.

  2. daniel says:

    Muy bueno el aporte, seria un lujazo que ademas todo se convirtiera a jpg, es decir elusuario sube un png y se transforma a jpg, saludos!

Deja tus comentarios o preguntas!

This site uses Akismet to reduce spam. Learn how your comment data is processed.