Bonjour,
Dans le cadre d'un projet il m'a été demandé de stocker des blob en base de donner et de les afficher.
Si le stockage ne pose pas de problème, l'affichage ne fonctionne pas étrangement.
Lorsque je fais un var_dump de mon blob je retrouve bien les 20 millions de caractères bizarre de mon blob, et un var_dump de mon type me donne aussi le bon type du blob pour le header..
Aurai-je fais une erreur d'étourderie ?
Voici le code de ma page apercu.php :
Je suis bien sûr sur la page "apercu.php?id=2" pour le get
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 <?php //si nous avons une image //connexion à la base de données include ("connexion.php"); //on sécurise notre donnée $idImg = intval($_GET['id']); //la requète qui récupère l'image à partir de l'identifiant $req = $bdd->prepare('SELECT * FROM pj WHERE id_pj = ?'); $req->execute(array($idImg)); //on stocke les données dans un tableau $donnees = $req->fetch(); //on indique qu'on affiche une image header ("Content-type: ".$donnees['type_pj'].", true"); //on affiche l'image en elle même echo $donnees['blob_pj']; $req->closeCursor(); ?>
Cordialement
Edit : Sur Firefox j'ai ce message : "L'image ne peut s'afficher car elle contient des erreurs"
Donc je vais aussi mettre mon code pour enregistrer l'image :
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 if (isset($_FILES['pj']) AND $_FILES['pj']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['pj']['size'] <= 1000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['pj']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'txt'); if (in_array($extension_upload, $extensions_autorisees)) { $img_nom = $_FILES['pj']['name']; $last_AI = $bdd->prepare('SELECT id_formulaire FROM data ORDER BY id_formulaire DESC LIMIT 1'); $last_AI->execute(); $id_form = $last_AI->fetch(); $img_blob = file_get_contents($_FILES['pj']['tmp_name']); $img_type = $_FILES['pj']['type']; $upload_pj = $bdd->prepare('INSERT INTO pj(nom_pj, blob_pj, type_pj) VALUES(:nom_pj, :blob_pj, :type_pj)'); $upload_pj->execute(array( 'nom_pj' => $img_nom, 'blob_pj' => addslashes($img_blob), 'type_pj' => $img_type )); } } }
Partager