Stocker des fichiers dans des champs BLOB avec PHP et MySQL

Table des matières

Lorsque nous créons un logiciel ou un site Web qui utilise des fichiers, nous devons décider comment les stocker, l'une des possibilités est de créer un dossier et d'y stocker les fichiers et une autre possibilité est de les stocker dans la base de données, nous devons garder à l'esprit qu'un champ longue goutte il peut stocker jusqu'à 4 gigaoctets.

Le moteur de base de données mySQL vous permet d'utiliser des champs de bloc qui stockent des informations au format binaire. Ce format permet de stocker différents types de fichiers, tels que Word, Excel, tout type d'images, des fichiers pdf, etc. Dans ce tutoriel, nous verrons comment stocker des fichiers dans une table de base de données MySQL, les données seront envoyées à partir d'un formulaire html et traitées avec PHP pour enregistrer les fichiers dans la base de données.

Pour réaliser les exemples du tutoriel, nous aurons besoin d'un serveur distant ou local qui peut être installé comme nous l'avons vu dans le tutoriel :

  • Comment installer Xampp pour transformer votre ordinateur en serveur Web, de cette façon, nous aurons un support pour php et mysql et toutes les bibliothèques nécessaires.

Ensuite, nous allons créer la base de données qui stockera les données du véhicule, avec photo et fiche technique pdf, pour cela nous allons créer à partir de phpmyadmin l'exemple d'être appelé un concessionnaire. Ensuite, nous allons créer la table des voitures.

 CRÉER BASE DE DONNÉES concessionnaire; Structure de la table pour la table `autos` CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model` varchar (150) DEFAULT '0',` photo` longblob) ENGINE = InnoDB DEFAULT CHARSET = latin1; Indices de la table `autos` ALTER TABLE` autos` ADD PRIMARY KEY (`id`); AUTO_INCREMENT des tables dumpées AUTO_INCREMENT de la table `autos` ALTER TABLE` autos` MODIFY `id` int (11) NON NULL AUTO_INCREMENT;
Code de création de tableau

Nous créons des pages PHP et un formulaire pour l'enregistrement des données
Ensuite nous allons créer un fichier config.php d'où nous allons nous connecter à la base de données :

 
Config.php

Ensuite nous allons créer une page en PHP qui se chargera de lister tous les enregistrements de la table autos.

 <? chassèrent "
"; chassèrent "
"; chassèrent ""; chassèrent ""; chassèrent ""; chassèrent ""; chassèrent "

"; $ result = mysql_query (" SELECT * FROM `autos`") ou trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ lignes [clé $] = barres obliques (valeur $);} echo "
"; chassèrent ""; chassèrent ""; chassèrent ""; chassèrent " "; chassèrent "

"; } chassèrent "
MarqueModèlephotoActions
". $ lignes ['mark']."". $ lignes ['modèle']." Voir la photoÉditer Supprimer
"; echo" Nouvelle voiture ";?> var13 ->
Lister tous les enregistrements de la table

Le formulaire pour enregistrer les données qui nous permet d'enregistrer une photo, pour cela, nous devons utiliser des éléments de fichier qui nous permettent de sélectionner un fichier à partir du navigateur, puis de le traiter avec PHP et d'enregistrer les données dans les champs blob de notre table autos de la base de données.

Création du web sur notre serveur
Nous créons le Web dans un dossier appelé concessionnaire sur notre serveur. La page web contiendra le code HTML et PHP, sous la forme nous devons utiliser l'attribut enctype = "multipart / form-data" qui indique que les fichiers peuvent être envoyés via le formulaire, s'il n'a pas l'attribut, les fichiers ne peuvent pas être envoyés.

Cette page s'appellera haut.php

Le code est le suivant :

 valeur $) {$ _POST [clé $] = mysql_real_escape_string (valeur $); } // nous lisons les données de la photo $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nom_photo = $ _FILES ["photo"] ["nom"]; // c'est le fichier que nous allons ajouter au champ blob $ foto = $ _FILES ['foto'] ['tmp_name']; // nous le convertissons en binaire avant de l'enregistrer $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (`make`,` model`, `photo`) VALEURS ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Photo' ) "; mysql_query ($ sql) ou die (mysql_error ()); header ('Emplacement : Listautos.php'); }?> var13 ->

Marque:

Modèle:

Photo:

Ensuite, nous devrons le montrer pour cela, nous allons créer une page qui interprète le fichier binaire et le montre, nous allons créer la page verfoto.php et nous vous indiquerons l'identifiant de la photo à afficher.
 Document sans titre

Nous pouvons également extraire les attributs du fichier si nous en avons besoin de la manière suivante :

 
Le fichier est stocké temporairement en mémoire pendant le processus, si une erreur se produit, les données peuvent être perdues ou ne pas être enregistrées complètement, le script PHP supprime le fichier temporaire de la mémoire une fois le processus terminé, même s'il ne se termine pas correctement.

Ensuite, nous allons créer la page pour modifier les données d'une voiture, que nous appellerons edit.php

 valeur $) {$ _POST [clé $] = mysql_real_escape_string (valeur $); } // nous lisons les données de la photo $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nom_photo = $ _FILES ["photo"] ["nom"]; // c'est le fichier temporaire $ photo = $ _FILES ['photo'] ['tmp_name']; // lit le fichier temporaire en binaire $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET `brand` = '{$ _POST [' brand ']}',` model` = '{$ _POST [' model ']}', `photo` = '$ photo' WHERE `id` = '$ id'"; mysql_query ($ sql) ou die (mysql_error ()); header ('Emplacement : Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$ id'")); ?> var13 ->

Marque:

Modèle:

Modèle:

Photo:

>

Nous devons garder à l'esprit que si nous supprimons un enregistrement, nous supprimerons les fichiers en même temps et ils ne pourront pas être récupérés. Pour supprimer un enregistrement, nous allons créer la page supprimer.php et nous utiliserons le code suivant.
 
Nous avons fait un code simple sans grande conception pour expliquer comment stocker des fichiers dans des champs blob, l'un des inconvénients est que la taille de la base de données augmente beaucoup lors du stockage de fichiers au format binaire.
L'un des avantages est que les fichiers sont enregistrés dans une table, ce qui est préférable pour des raisons de sécurité, car les fichiers ne sont accessibles que si vous avez les autorisations pour gérer la base de données et qu'il n'y a pas de dossier physique à partir duquel télécharger les fichiers ou les manipuler par un attaquant.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif
wave wave wave wave wave