Subir múltiples archivos al servidor usando PHP & MySQLi

En este tutorial te mostraremos cómo subir múltiples archivos al servidor usando PHP & MySQLi, ya que si bien el tutorial anterior vimos la Carga de imágenes usando AJAX con PHP & MySQLi. En este tutorial vamos a cargar múltiples archivos en un solo envío de nuestro formulario.

Creando nuestra base de datos

El primer paso es crear nuestra base de datos.
1. Abre phpMyAdmin.
2. Haga clic en bases de datos, cree una base de datos y asignarle el nombre que desees, para este tutorial nosotros la hemos llamado “upload“, pero tu puedes nombrarla como desees .
3. Después de crear una base de datos, haz clic en la pestaña importar, luego selecciona el archivo llamado “upload”, dicho archivo se encuentra dentro de la carpeta “db”. Ver la imagen a continuación para obtener instrucciones detalladas sobre la importación de tablas para nuestra base de datos.




Creando nuestra conexión

A continuación, creamos nuestra conexión a nuestra base de datos. Esto servirá como el puente entre nuestros formularios y nuestra base de datos. Llamamos este archivo como conn.php .

<?php
 
//MySQLi Procedural
$conn = mysqli_connect("localhost","root","","upload");
if (!$conn) {
	die("Connection failed: " . mysqli_connect_error());
}
 
?>

Creando nuestra carpeta upload

 El siguiente paso es crear nuestra carpeta upload. Esto servirá para almacenar los archivos cargados desde nuestra aplicación web. Nombraremos la carpeta upload.

index.php

Creamos nuestro Formulario de carga y mostramos los archivos que hemos subido. En este ejemplo de este tutorial, hemos mostrado archivos cargados como imágenes.

<!DOCTYPE html>
<html>
<head>
	<title>Subir múltiples archivos usando PHP</title>
</head>
<body>
	<div style="height:50px;"></div>
	<div style="margin:auto; padding:auto; width:80%;">
		<span style="font-size:25px; color:#16a085"><center><strong>Subir múltiples archivos al servidor usando PHP & MySQLi</strong></center></span>
		<hr>		
		<div style="height:20px;"></div>
		<form method="POST" action="upload.php" enctype="multipart/form-data">
		<input type="file" name="upload[]" multiple>
		<input type="submit" value="Subir"> 
		</form>
	</div>
	<div style="margin:auto; padding:auto; width:80%;">
		<h2>Salida:</h2>
		<?php
			include('conn.php');
			$query=mysqli_query($conn,"select * from photo");
			while($row=mysqli_fetch_array($query)){
				?>
				<img src="<?php echo $row['location']; ?>" height="150px;" width="150px;">
				<?php
			}
		
		?>
	</div>
</body>
</html>

upload.php

Por último, vamos a crear el código que se encarga de subir múltiples archivos a nuestro servidor, y a la vez realiza el registro en nuestra base de datos.

<?php
	include('conn.php');
	
	foreach ($_FILES['upload']['name'] as $key => $name){
		
		$newFilename = time() . "_" . $name;
		move_uploaded_file($_FILES['upload']['tmp_name'][$key], 'upload/' . $newFilename);
		$location = 'upload/' . $newFilename;
		
		mysqli_query($conn,"insert into photo (location) values ('$location')");
	}
	header('location:index.php');
?>

Aquí termina este tutorial. Si tienes algún comentario o pregunta, no dudes en hacernos saber dejando un comentario a continuación.   Happy Coding 😀