Insérer l'image dans la DB ou upload sur serv

Fermé
micropro7 Messages postés 39 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 17 avril 2014 - 10 sept. 2010 à 21:01
 fightwithdogma - 10 sept. 2010 à 22:23
Bonjour,
Je voudrais savoir savoir quel méthode utiliser pour mettre des images sur mon site. J'utilise habituellement le transfert des images sur le serveur mais il est aussi possible d'enregistrer l'image en mode binaire dans la base de données et le recréer avec php à l'affichage.

Je voudrais savoir quelle méthode adopté. je me dis si j'enregistre les images dans la base de données elle se remplira assez vite.Et aussi en enregistrant les images sur le serveur, il se remplira également.


A voir également:

3 réponses

dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 63
10 sept. 2010 à 21:19
Salut, oui dans les deux cas ça remplira!! avec MySQL il y a un typage "BLOB" je crois, mais je m'en suis jamais servi, mais je pense que le plus simple est de stocker simplement le nom de l'image dans la BD et de mettre l'image dans un dossier de ton server.
0
micropro7 Messages postés 39 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 17 avril 2014
10 sept. 2010 à 21:25
Merci pour ta réponse mais en fait je ne cherche pas ce qui est simple à faire. Je sais faire les deux mais lequel occupe plus mon espace?
0
fightwithdogma
10 sept. 2010 à 22:23
Tu peux essayer d'encoder ton image en base64, c'est le moins lourd et le plus utilisé. La procédure se fait comme suis en php:
-upload d'abord ton image dans un répertoire temporaire (avec un script évidemment, cherche sur internet des exemples d'upload par formulaire.).

-Il faut bien sûr que le nom de l'image te soit connu. Tu pourras ainsi créer une variable contenant cette image (qui se trouve sur le serveur):
$image_brute = file_get_contents( 'monimage.png' ) ;


-Php peut maintenant traiter ton image pour la convertir en base64:
$image_base64 = chunk_split( base64_encode( $image_brute ) ) ;


-A présent, tu peux transférer $image_base64 vers ta base de données MySQL (ou je sais plus):
mysql_query( 'INSERT INTO matable VALUES ' . $image_base64 ); 


-N'oublie pas de retirer ton image brute de ton répertoire temporaire.

-Pour récupérer ton image dans une page à sortie format HTML, il te suffit, dans la src d'une balise <img/>, de mettre la valeur $image_base64 précédée de la chaîne 'data:image/png;base64,'.
$sql = mysql_query( 'SELECT image FROM matable WHERE [gnagna]');
$image = mysql_fetch_row( $sql );
$img_src = $image[0];


Et voilà. C'est pensé sur le tas, c'est très probable que ça marche pas, surtout avec mes compétences. Mais c'est un petit bout de réponse. Une dernière chose, MySQL va être lent à exécuter de telles requêtes à données très grosses, donc évite de mettre des photos, et ne dépasse pas les 100x100: les navigateurs vont aussi se trainer à avaler ton image.
0