bonjour à tous,

Je suis confronté léger soucis d'affichage d'une image stocker dans MySQL.
Pour ce qui est de l'enregistrement dans la BDD et l'affichage je me suis appuyé sur ce tutoriel
http://beaussier.developpez.com/arti...hp/mysql/blob/

La partie enregistrement ce fait très bien (enfin je pense puisque le champ blob se rempli ) mais par contre je sais pas ce qui est stocké est correct ou pas.

Le site est basé sur un pseudo MVC je ne sais pas si ela peux avoir une influence sur l'affichage de l'image, je ne suis pas assez expérimenté dans ce domaine, mais c'est en forgeant que l'on devient forgerons )

Pour l'enregistrement voici le code

Pour ce qui est de la vue (il s'agit d'une fenetre modal)
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
 
<?php
    if (isset($_FILES['fic'])) {
        transfert();
    }
    ?>
    <div class="modal fade" id="uploadImage" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title">Insérer une image du site</h4>
                </div>
                <div class="modal-body">
                    <form enctype="multipart/form-data" action="#" method="post">
                        <input type="hidden" name="MAX_FILE_SIZE" value="250000" />
                        <input type="file" name="fic" size=50 />
                        <input type="submit" value="Envoyer" />
                    </form>
 
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Fermer</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
fonction tranfert
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
 
function transfert() {
    $ret = FALSE;
    $img_blob = '';
    $img_taille = 0;
    $img_type = '';
    $img_nom = '';
    $taille_max = 250000;
    $idimage = $_SESSION['iddossier'] . $_SESSION['sousDossierEnCours'];
 
    $ret = is_uploaded_file($_FILES['fic']['tmp_name']);
    if (!$ret) {
        echo"Problème de transfert";
        return FALSE;
    } else {
        //le fichier à bien été reçu
        $img_taille = $_FILES['fic']['size'];
 
        $imageRetailler = PhpThumbFactory::create($_FILES['fic']['tmp_name']);
        $imageRetailler->resize(300, 300)->save($_FILES['fic']['tmp_name']);
        $img_taillereduit = $_FILES['fic']['size'];
        if ($img_taille > $taille_max) {
            echo 'Trop gros';
            return FALSE;
        } else {
            $img_type = $_FILES['fic']['type'];
            $img_nom = $_FILES['fic']['name'];
            //recupération du contenu binaire du fichier image stocker dans un répertoire temporaire
            $img_blob = file_get_contents($_FILES['fic']['tmp_name']);
            //enregistrement de l'image dans la BDD
            $pdo = PDOIbgn::getPDOIBGN();
//            $req = "UPDATE sousdossiers SET photoDuSite= '" . addslashes($img_blob) . "' WHERE dossiers_iddossiers = " . $_SESSION['iddossier'] . " AND numSousDossiers = " . $_SESSION['sousDossierEnCours'];
            $req = "INSERT INTO images(idimages, imgNom, imgTaille, imgType, imgBlob) VALUES (" . $idimage . ",'" . $img_nom . "','" . $img_taille . "','" . $img_type . "','" . addslashes($img_blob) . "')";
            $pdo->requeteAction($req);
            return TRUE;
        }
    }
}
Avant l'enregistrement je redimmensionne l'image pour qu'elle puissent s'afficher dans une cellule d'un tableau prédimmentionner, por ce faire j'utilise la bibliothèque PhpThumb.

Pour l'affichage de 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
 
<table class="table table-image" id="table-image">
                        <tr>
                            <th>
                                <?php
                                $req = "SELECT idimages,imgType, imgBlob FROM images WHERE idimages = " . $_SESSION['iddossier'] . $_SESSION['sousDossierEnCours'];
                                $col = $pdo->getFetchRow($req);
                                if (!$col[0]) {
                                    ?>
                                    <img src="./img/image-inserer-icone-3816-128.png">
                                    <?php
                                } else {
                                    header("Content-type: " . $col[1]);
 
                                    echo $col[2];
                                }
                                ?>
 
                            </th>
                        </tr>
                    </table>
Ce que j'obtiens à l'affichage c'est ceci (c'est qu'un extrait sinon il y a 8km de ligne de ce tye)
����JFIF��R��f|���`��ڠ�����f��"#��]�bW8#9�����"+���=�כ�_�Zz-��Y�.!;F����������WX��L��G����4�ڪ2w���OL�ԓ��Ӝח�j��Gl�����8 <�|�C�ՑN�f!� ņI#'������9$b�lݣ�^�}�]|�\M��JUl�K�i]^�ךﮚ]]�uE������5(ۏ4�$ pG_C�=H=�y�[��#(���R������ޤ�Q�+�P�d,����w �� vHɇ�8��z]F��g��q-H?�&�n^k�7�����T\���͞)N���ߦឝpO_|{ו�B^1��/���� x�9$�$q�c�%�$�f`T���ו8�pN O�<{_�����̨�u$ܹ��i��h��9�?ڋ�����j��"a�*�~��'8����#��m�C���C ...
Pouvez vous m'aider s'il vous plait à trouver la solution pour que j'apprenne l'erreur ou les erreurs que j'ai faites ?

Je vous en remercie par avance
bonne journée