Insertion image à une base MySql

Fermé
Joker_ Messages postés 172 Date d'inscription mardi 13 octobre 2009 Statut Membre Dernière intervention 20 janvier 2023 - Modifié le 16 sept. 2019 à 13:02
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 16 sept. 2019 à 15:47
Bonjours,
le client de ma site web peut ajouter des images et pour ce la j'ai créer la formulaire suivante:

    <form action ="ajouter_home_faire.php" method="POST" enctype="multipart/form-data">
<input type="file" name="fic" size=50 required="required" x-moz-errormessage=""/>
<input type="text" dir="rtl" name = "image"  size = "25" align = "right" tabindex=8 required="required" x-moz-errormessage="">:
<input type="image" value="" src="ajouter.png" height="40" width="40">
   </form> 

ainsi la page web "faire.php":
  $img_blob = '';
  $img_taille = 0;
  $img_type = '';
  $img_nom = '';
  $error_image="";
  $ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
  if ( !$ret )
  {
   $error_image="problème upload";
  }

   $img_nom = $_FILES['fic']['name'];
   $img_type = substr($img_nom, strrpos($img_nom, '.')+1);
   echo "nom:" .$_FILES['fic']['tmp_name']."<br>";
  $img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
  
  if($error_image=="")
   {
     
    $requete = "insert into home(lib,home,type) values('".$_POST['image']."','".addslashes ($img_blob )."','$img_type');";
    mysql_query($requete);
    echo $requete;
  }
  

enfin la structure de la table "home":

CREATE TABLE IF NOT EXISTS `home` (
  `code_home` int(11) NOT NULL AUTO_INCREMENT,
  `lib` varchar(1000) NOT NULL,
  `home` longblob NOT NULL,
  `type` varchar(5) NOT NULL,
  PRIMARY KEY (`code_home`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;


la page fonctionne pour les petites images mais elle ne fonctionne pas pour les images de grand taille pourtant j'ai modifié la page php.ini :

upload_max_filesize = 1000M
post_max_size = 1000M


Des warning qui s'affichent pour la ligne "mysql_query($requete);"

Mysql has gone away
Error reading result set's header

merci beaucoup
A voir également:

1 réponse

jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
16 sept. 2019 à 15:47
Bonjour,

Déjà... l'extension mysql est OBSOLETE.
Il faut désormais passer à PDO ou MYSQLI (https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top)

Ensuite.. tu mélanges les paramétrage de taille PHP ... avec le paramétrage de la BDD mysql...
Les instructions upload_max_filesize et post_max_size ne concernent que la partie "php"
Côté BDD .. ça serait l'instruction max_allowed_packet qu'il faudrait modifier...

Mais... bon..... on ne stocke jamais une image (ou un fichier) dans une BDD ...
Cela prend de la place dans la base inutilement au risque de la ralentir...
On ne stocke, dans la base, que le CHEMIN vers le fichier. ( fichier qui sera stocké sur le disque dur du serveur... )



0