¿Por qué $_FILES estaría vacío al cargar archivos en PHP?

Al cargar los archivos o escribir el código, los desarrolladores cometen muchos errores que la mayoría de las veces no podemos resolver. Algunos errores de ortografía, algunas partes olvidadas en el código conducen a la carga fallida del archivo y dan advertencias o errores. Para evitar este tipo de error, debemos aprender acerca de los errores comunes que ocurren para una mejor comprensión.

Los siguientes ejemplos nos ayudan a entender de una mejor manera.

Ejemplo 1: cuando olvidamos escribir enctype=”multipart/form-data” en el campo del formulario, no nos permite cargar un archivo porque esto especifica que el formulario que estamos enviando tiene un tipo de archivo, por lo que permite la Subir Archivo.

No debemos olvidar escribir action=”file_name” en el campo del formulario, ya que es importante especificar el formulario que envía los datos, el archivo que recibe los datos y los ejecuta o recupera los datos en consecuencia.

index.html

<!DOCTYPE html>
<html>
  
<head>
    <meta http-equiv="Content-Type" 
          content="text/html; charset=utf-8" />
</head>
  
<body>
    <form enctype="multipart/form-data" 
          action="file.php" method="POST">
        Choose a file to upload: 
        <input name="uploadedfile" type="file" />
        <br />
        <input type="submit" value="Upload File" />
    </form>
</body>
  
</html>

file.php

<?php
  
    echo 'file count=', count($_FILES),"\n";
    print "<pre>";
    print_r($_FILES);
    print "</pre>";
    echo "\n";
      
?>

Producción:

cuando olvidas ingresar las cosas anteriores

Cuando todo está correctamente insertado

Ejemplo 2:   cuando olvidamos escribir method=»POST» en el campo del formulario, no se puede cargar porque es importante que el método sea POST, ya que el método POST se usa para enviar los datos.

index.html

<!DOCTYPE html>
<html>
  
<head>
    <meta http-equiv="Content-Type" 
        content="text/html; charset=utf-8" />
</head>
  
<body>
    <form enctype="multipart/form-data" 
          action="file.php">
        Choose a file to upload: 
        <input name="uploadedfile" type="file" />
        <br />
        <input type="submit" value="Upload File" />
    </form>
</body>
  
</html>

file.php

<?php
  
    if($_SERVER["REQUEST_METHOD"] == "POST") {
        echo 'file count=', count($_FILES),"\n";
        print "<pre>";
        print_r($_FILES);
        print "</pre>";
        echo "\n";
    }
    else {
        echo "Method is not POST";
    }
     
?>

Producción:

Cuando olvidamos ingresar el método de publicación

Cuando todo está correctamente insertado

Ejemplo 3: Lo siguiente demuestra la ejecución cuando el tamaño del archivo cargado es mayor que el tamaño del archivo permitido. Utilice el archivo «index.html» utilizado en el Ejemplo 1. 

file.php

<?php
  
    // Check method is POST
    if($_SERVER["REQUEST_METHOD"] == "POST") {
  
        // Check file size.
        if ($_FILES["uploadedfile"]["size"] > 10000) {
  
            echo "Sorry, your file is too large.";
            exit; // stop the PHP script
        }
          
        echo 'file count=', count($_FILES),"\n";
        print "<pre>";
        print_r($_FILES);
        print "</pre>";
        echo "\n";
    }
    else {
        echo "Method is not POST";
    }
     
?>

Producción:

cuando el tamaño es más grande de lo esperado

cuando el tamaño es pequeño de lo esperado

Ejemplo 4: El siguiente código demuestra la ejecución cuando la extensión no coincide con las extensiones permitidas. Utilice el archivo «index.html» utilizado en el Ejemplo 1. 

file.php

<?php
  
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
  
        $target_file = basename($_FILES["uploadedfile"]["name"]);
  
        // Extract the file extension
        $imageFileType = strtolower(
            pathinfo($target_file, PATHINFO_EXTENSION));
         
        // Make an array of allowed extensions
        $extensions = array("jpeg","jpg","png","pdf");
          
        // Check that extension is present in the array or not
        if(in_array($imageFileType, $extensions) === false) {     
            echo "Invalid file extension ..!!";
            exit;
        } 
  
        echo 'file count=', count($_FILES),"\n";
        print "<pre>";
        print_r($_FILES);
        print "</pre>";
        echo "\n";
    }
    else {
        echo "Method is not POST";
    }
     
?>

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 *