Cargar varios archivos en PHP

Subodh Poudel 30 enero 2023
  1. Utilice la etiqueta multiple, un array en la etiqueta name del atributo input en el formulario y la función move_uploaded_file() para cargar varios archivos en PHP
  2. Utilice el PDO para cargar varios archivos en la base de datos en PHP
Cargar varios archivos en PHP

Introduciremos un método para cargar varios archivos en PHP especificando el atributo name de la etiqueta input como un array y utilizando el atributo multiple. El valor del atributo enctype de la etiqueta form es multipart/form-data. Este método utiliza mysqli para la conexión a la base de datos.

También presentaremos otro método para cargar múltiples archivos en PHP usando el PDO. Cargaremos los archivos en una carpeta y luego los cargaremos a una base de datos. Este método es similar al primer método en términos de implementación.

Utilice la etiqueta multiple, un array en la etiqueta name del atributo input en el formulario y la función move_uploaded_file() para cargar varios archivos en PHP

Podemos especificar el atributo name de la etiqueta input como un array para cargar varios archivos. La etiqueta input utiliza la palabra clave multiple que nos permite seleccionar el archivo múltiple durante la carga. Podemos escribir la codificación multipart/form-data para el atributo enctype para especificar cómo se deben codificar los datos del formulario al enviar el formulario. Podemos usar mysqli para conectarnos a la base de datos. La función move_uploaded_file() mueve el archivo cargado desde una ubicación temporal del servidor a la ubicación deseada. Podemos utilizar las sentencias SQL INSERT para subir el archivo seleccionado a la base de datos.

Por ejemplo, establezca una conexión de base de datos con el objeto mysqli y asigne el valor a la variable $db. Cree un formulario HTML con el método POST y el tipo de codificación como multipart/form-data para cargar los archivos. Especifique el atributo type de la etiqueta input como file y el atributo name como file[]. No olvide escribir el atributo multiple antes de cerrar la etiqueta input. Escriba la etiqueta input para enviar el formulario.

Compruebe si el formulario se ha enviado con la función isset(). Utilice la función count para contar el número de archivos cargados. Tome $_FILES['file']['name'] como parámetro para la función count y asígnelo a una variable $countfiles. Utilice el bucle for para recorrer el archivo cargado. Dentro del bucle, cree una variable $filename y asígnela como $_FILES['file']['name'][$i]. Cree una carpeta llamada cargar en el directorio raíz. Utilice la función move_upload_file() para mover el archivo. Utilice $_FILES['file']['tmp_name'][$i] como el primer parámetro que es el archivo con nombre temporal. Utilice 'upload/'.$filename como segundo parámetro, que es el nombre del archivo y la ubicación para almacenar el archivo cargado.

Ejecute una consulta SQL INSERT para insertar los archivos en la base de datos. Inserte la variable $filename como id y name en la tabla fileup de la base de datos. Utilice la variable $db para llamar a la función query() con la variable $sql como parámetro para ejecutar la consulta.

Código de ejemplo:

# php 7.*
<?php
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $sql = "INSERT INTO fileup(id,name) VALUES ('$filename','$filename')";
        $db->query($sql);
        move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
    }
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
?>

Producción :

SELECT * FROM `fileup`
id name 
1 cfc.jpg 
2 hills.jpg

Utilice el PDO para cargar varios archivos en la base de datos en PHP

Podemos usar el PDO para cargar varios archivos en PHP. Podemos usar el objeto PDO para crear una conexión a la base de datos. Usamos las declaraciones preparadas para insertar el archivo en la base de datos. Este método solo es diferente del primer método en términos de conexión a la base de datos. También podemos usar el formulario HTML exacto para este método. Demostramos este método cargando dos archivos jpg en la carpeta y la base de datos.

Por ejemplo, establezca una conexión a la base de datos PDO utilizando la palabra clave new y asígnela a la variable $conn. Compruebe si el formulario se ha enviado con la función isset(). Cuente los archivos usando la función count como arriba. Luego, escriba una consulta en la variable $query para insertar el id y el name. Escriba los marcadores de posición ? para los valores de la consulta. Prepare la consulta usando la función prepare() y asigne el valor en la variable $statement. Mueva cada archivo a la carpeta uplaod usando la función move_uploaded_file(). Ejecute la consulta usando la función execute(). Proporcione un array con $filename y $target_file como parámetros en la función.

En el siguiente ejemplo, el usuario carga dos archivos jpg. En primer lugar, el archivo se carga en la carpeta upload y luego se carga en la base de datos. La base de datos contiene la tabla fileup, y tiene las columnas id y name. Para obtener más información sobre la función move_uploaded_files(), consulte el Manual de PHP.

Código de ejemplo:

#php 7.x
<?php
$conn = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    $query = "INSERT INTO fileup (id, name) VALUES(?,?)";
    $statement = $conn->prepare($query);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $target_file = 'upload/'.$filename;
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$target_file);
        $statement->execute(array($filename,$target_file));
        }
  }    
?>

Producción :

SELECT * FROM `fileup`
id name 
1 upload/cfc.jpg 
2+ upload/count.jpg 
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP Upload