Bonjour,
je rencontre un soucis, je dois enregistrer des images dans une base de donnée SQL SERVER depuis mon site. La bdd est en french_ci_as et le site en UTF-8. Je n'ai pas l'habitude stocker les images en dur, en générale je préconise de stocker le chemin mais ici le gestionnaire de la db ne me laisse pas le choix. Ensuite je dois afficher ces images sur le site.
J'ai essayé ceci
l'enregistrement ce fait correctement et en suite pour afficher l'image j'ai fait ça sous forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 if(!is_uploaded_file($_FILES['logo']['tmp_name'])&& isset($_FILES['logo'])) { echo 'Un problème est survenu durant l opération. Veuillez réessayer !'; } else { //liste des extensions possibles $extensions = array('/jpg','/jpeg'); //récupère la chaîne à partir du dernier / pour connaître l'extension $extension = strrchr($_FILES['logo']['type'], '/'); //vérifie si l'extension est dans notre tableau if(!in_array($extension, $extensions)) { echo 'Vous devez uploader un fichier de type jpg ou jpeg'; } else { //on définit la taille maximale define('MAXSIZE', 500000); if($_FILES['logo']['size'] > MAXSIZE) { echo 'Votre image est supérieure à la taille maximale de '.MAXSIZE.' octets'; } else { //connexion à la base de données //Lecture du fichier $filelogo = file_get_contents($_FILES['logo']['tmp_name']); $filelogo = bin2hex($filelogo); } } }<br>ensuite j'enregistre dans ma db
Code : Sélectionner tout - Visualiser dans une fenêtre à part <img src='<?php echo "/image-event.php?idact={$donnees['IDACT']}"; ?>'
avec pour image-event
Seulement l'image ne s'affiche que partiellement et je ne vois pas du tout à quoi c'est du
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 include('connexion.php'); // temp $objCharsetEvent = $dbh->query("SELECT Photo_BInaire FROM [ID143953_b4c].[dbo].[SQL_ACT] WHERE IDACT = {$_GET['idact']} AND IdLibTypeAct =5"); $objCharsetEvent->execute(); $event = $objCharsetEvent->fetch(); header('content-type: image/jpeg'); echo hex2bin($event['Photo_BInaire']);
Avec cette méthode l'image est enregistré sous forme 0x6666643866666531303031383435373836393636303... et j'aimerais qu'elle soit plutôt enregistrer sous 0xFFD8FFE000104A46494600010101006000600000FFDB.... car je crois que l'erreur vient de la mais je ne sais pas comment atteindre ce résultat. Ou est-ce du au différence d'encodage entre le site et la db ?
Merci d'avance
Partager