Buscar este blog

Subir varias imágenes desde una base de datos usando PHP y MySQL

En este truco o ejercicio, le mostraremos cómo cargar múltiples imágenes en PHP y almacenar las imágenes en la base de datos MySQL. La carga múltiple de imágenes permite al usuario seleccionar múltiples archivos a la vez y cargar todos los archivos al servidor con un solo clic.

Nuestro código de ejemplo implementará la siguiente funcionalidad para demostrar la carga de múltiples imágenes en PHP .
Formulario HTML para seleccionar múltiples imágenes.
Sube imágenes al servidor usando PHP.
Almacene nombres de archivos en la base de datos utilizando PHP y MySQL.
Recupere imágenes de la base de datos y visualíce en la página web.
Crear tabla de base de datos

Es necesario crear una tabla en la base de datos para almacenar los nombres de los archivos de imagen.

CREATE TABLE `images` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `uploaded_on` datetime NOT NULL,
 `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Configuración de la base de datos (dbConfig.php)

El dbConfig.php se utiliza para conectarse y seleccionar la base de datos MySQL. Especifique el nombre de host de la base de datos ( $dbHost), nombre de usuario ( $dbUsername), contraseña ( $dbPassword) y nombre ( $dbName) según sus credenciales de MySQL

<?php// Database configuration$dbHost     "localhost";$dbUsername "root";$dbPassword "root";$dbName     "codexworld";
// Create database connection$db = new mysqli($dbHost$dbUsername$dbPassword$dbName);
// Check connectionif ($db->connect_error) {
    die("Connection failed: " $db->connect_error);
}?>

Formulario de carga de archivos HTML

Cree un formulario HTML con un campo de entrada para permitir al usuario seleccionar las imágenes que desea cargar.
La etiqueta < form > debe contener los siguientes atributos.
método = "publicar"
enctype = "multipart / form-data"

La etiqueta < input > debe contener type="file"y multiple atributos.

<form action="" method="post" enctype="multipart/form-data">
    Select Image Files to Upload:
    <input type="file" name="files[]" multiple >
    <input type="submit" name="submit" value="UPLOAD">
</form>

Subir múltiples archivos en PHP (upload.php)

El upload.php maneja la funcionalidad de carga de múltiples imágenes y muestra el estado de carga al usuario.
Incluya el archivo de configuración de la base de datos para conectarse y seleccione la base de datos MySQL.
Obtenga la extensión de archivo usando la función pathinfo () en PHP y verifique si el usuario selecciona solo los archivos de imagen.
Suba imágenes al servidor utilizando la función move_uploaded_file () en PHP.
Inserte nombres de archivos de imagen en la base de datos usando PHP y MySQL.
Mostrar el estado de carga al usuario.

<?phpif(isset($_POST['submit'])){
    // Include the database configuration file
    include_once 'dbConfig.php';
    
    // File upload configuration
    $targetDir "uploads/";
    $allowTypes = array('jpg','png','jpeg','gif');
    
    $statusMsg $errorMsg $insertValuesSQL $errorUpload $errorUploadType '';
    if(!empty(array_filter($_FILES['files']['name']))){
        foreach($_FILES['files']['name'] as $key=>$val){
            // File upload path
            $fileName basename($_FILES['files']['name'][$key]);
            $targetFilePath $targetDir $fileName;
            
            // Check whether file type is valid
            $fileType pathinfo($targetFilePath,PATHINFO_EXTENSION);
            if(in_array($fileType$allowTypes)){
                // Upload file to server
                if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath)){
                    // Image db insert sql
                    $insertValuesSQL .= "('".$fileName."', NOW()),";
                }else{
                    $errorUpload .= $_FILES['files']['name'][$key].', ';
                }
            }else{
                $errorUploadType .= $_FILES['files']['name'][$key].', ';
            }
        }
        
        if(!empty($insertValuesSQL)){
            $insertValuesSQL trim($insertValuesSQL,',');
            // Insert image file name into database
            $insert $db->query("INSERT INTO images (file_name, uploaded_on) VALUES $insertValuesSQL");
            if($insert){
                $errorUpload = !empty($errorUpload)?'Upload Error: '.$errorUpload:'';
                $errorUploadType = !empty($errorUploadType)?'File Type Error: '.$errorUploadType:'';
                $errorMsg = !empty($errorUpload)?'<br/>'.$errorUpload.'<br/>'.$errorUploadType:'<br/>'.$errorUploadType;
                $statusMsg "Files are uploaded successfully.".$errorMsg;
            }else{
                $statusMsg "Sorry, there was an error uploading your file.";
            }
        }
    }else{
        $statusMsg 'Please select a file to upload.';
    }
    
    // Display status message
    echo $statusMsg;
}?>

Mostrar imágenes de la base de datos


Ahora recuperaremos los nombres de archivo de la base de datos y mostraremos las imágenes respectivas del servidor en la página web.
Incluya el archivo de configuración de la base de datos para conectarse y seleccione la base de datos MySQL.
Obtenga imágenes de la base de datos MySQL usando PHP.
Recupere imágenes del servidor (cargas /) y que figuran en la página web

<?php// Include the database configuration fileinclude_once 'dbConfig.php';
// Get images from the database$query $db->query("SELECT * FROM images ORDER BY id DESC");

if($query->num_rows 0){
    while($row $query->fetch_assoc()){
        $imageURL 'uploads/'.$row["file_name"];?>
    <img src="<?php echo $imageURL?>" alt="" />
<?php }
}else{ ?>    <p>No image(s) found...</p>
<?php ?> 

Aquí hemos mostrado la forma más fácil de integrar la funcionalidad de carga de múltiples imágenes en el sitio web. Este código de ejemplo también se usa para cargar múltiples archivos en PHP. Puede ampliar estas funciones de carga de múltiples imágenes según sus necesidades.