¿Cómo acceder al código de error asociado con la carga de archivos en PHP?

El error en PHP ocurre cuando no tratamos los casos en consecuencia. 

Hay muchos errores que ocurren durante la carga del archivo. Los errores son los siguientes

  • El tamaño del archivo es mayor que el tamaño esperado
  • La extensión no es correcta o podemos decir que el tipo de archivo no coincide según las condiciones.
  • Falta el directorio.
  • El archivo ya existe en el directorio preferido.

Podemos acceder al código de error mediante la variable incorporada $_FILES[«archivo»][«error»] donde nos da el código de error y se definen de la siguiente manera.

  • 0 => ‘El archivo se cargó con éxito
  • 1 => El archivo subido cruza el límite
  • 2 => El archivo cargado supera el límite mencionado en el formulario HTML.
  • 3 => El archivo se cargó parcialmente o hubo algún error entre la carga.
  • 4 => No se cargó ningún archivo.
  • 6 => Falta una carpeta temporal.
  • 7 => Error al escribir el archivo en el disco.
  • 8 => Una extensión de PHP detuvo el proceso de carga.

Ahora entendemos esto dando el siguiente ejemplo.

Ejemplo 1: En este ejemplo, se enumeran muchos errores. Toma el nombre del directorio y el archivo del dispositivo local y luego lo envía a través del método POST a «file.php». Luego verifica la creación del directorio, si no, crea uno; de lo contrario, verifica la extensión y verifica las extensiones permitidas enumeradas en la array (puede agregar de acuerdo con los requisitos del programa). Luego verifica el tamaño del archivo y luego verifica la existencia del archivo.

 

file.php

<!DOCTYPE html>
<?php
  
    $target_dir = $_POST["directory_name"]."/";
    $target_file = $target_dir . basename($_FILES["file"]["name"]);
    $name = $_FILES["file"]["name"];
    $type = $_FILES["file"]["type"];
    $size = $_FILES["file"]["size"];
    $flag = 1;
  
    if($_SERVER["REQUEST_METHOD"] == "POST")
   {
      
        if(!empty($_POST["directory_name"]))
        {
          
            if(!is_dir($_POST["directory_name"])) {
          
                echo "Creating Directory ..!!";
                mkdir($_POST["directory_name"]);    
                $flag = 1;            
            }
        }
       else
       {
          
          echo "<b>Error: Specify the directory name...</b>";
          $flag = 0;
          exit;    
       }    
      
    // Check if file was uploaded without errors
    if(isset($_FILES["file"]) && $_FILES["file"]["error"] == 0)
    {
        $allowed_ext = array("jpg" => "image/jpg",
                            "jpeg" => "image/jpeg",
                            "png" => "image/png");
      
        // Verify file extension
        $ext = pathinfo($name, PATHINFO_EXTENSION);
  
        if (!array_key_exists($ext, $allowed_ext))    
        {
            die("<b>Error: Please select a valid file format.</b>");
        }    
              
        $maxsize = 200000;
          
        if ($size > $maxsize)    
        {
            die("<b>Error: ". $_FILES["file"]["error"] . 
            "  File size is larger than the allowed limit.</b>");
        }    
                      
      
        // Verify MYME type of the file
        if (in_array($type, $allowed_ext))
        {
            // Check whether file exists before uploading it
            if (file_exists("$target_dir/".$_FILES["file"]["name"]))    
            {
                echo "<b>".$_FILES["file"]["name"]." is already exists.</b>";
            }        
            else
            {
                if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
                      
                    echo "<b>The ".  $_FILES["file"]["name"]. " has been uploaded.</b>";
  
                } 
                else 
                {
                    echo "<b>Error : ". $_FILES["file"]["error"] .
                    " Sorry, there was an error uploading your file.";
                }
            }
        }
        else
        {
            echo "<b>Error: ". $_FILES["file"]["error"] . " Please try again.</b>";
        }
    }
    else
    {
        echo "<b>Error: ". $_FILES["file"]["error"] . " File is not uploaded</b>";
    }
  }
?>
</body>
</html>

Producción:

Publicación traducida automáticamente

Artículo escrito por rohanmittal1366 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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