IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage d'un fichier stocké sous la forme d'un champ BLOB


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut Affichage d'un fichier stocké sous la forme d'un champ BLOB
    Bonjour,

    Depuis quelque semaines je réalise un intranet pour une petite entreprise. J'ai décidé après mur réflexion de stocker mais fichiers dans une base de donnée, facilitant l'accès à ceux ci et évitant les problèmes de transfert pour le déplacement. Bref ayant les 2 solution l'une fonctionne parfaitement avec les chemins stocké l'affichage l'insertion tout marche parfaitement. Mais concernant l'autre méthode j'arrive a stocker mais fichier dans la base de donnée a les transférer en type blob etc mais je n'arrive pas à les afficher malgré de nombreuses tentatives et tutos tenté rien n'y fait je n'arrive pas à m'en sortir. C'est donc pour cela que je viens vous voir et vous demandé un petit coup de main afin d'éclairer ma lanterne égaré . "j'utilise
    PHPmyadmin 2.9.2"

    Voici mais codes :

    "liste.php" (qui fait appel à la page apercu.php):
    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
     
    <?php 
    // On démarre la session
    session_start();
     
    include ("config.php"); 
    if ($_SESSION['role'] == "admin") 
    {
    ?>
    <html>
    <head><title>Stock d'images</title></head>
    <body>
    <?php
    $connexion= mysql_connect($MyServeur,$MyLogin,$MyPass) or die ("Erreur, connexion à la base de données impossible");
    mysql_select_db($MyBase,$connexion);
     
    //echo '<pre>', print_r($GLOBALS), '</pre>'; 
     
    $req = "SELECT nom, id, description, taille, type ".
    "FROM documents ORDER BY nom";
    $ret = mysql_query ($req) or die (mysql_error ());
    while ( $col = mysql_fetch_row ($ret) )
    {
    echo "<a href=\"apercu.php?id=".$col[1].
    "\">".$col[0]."</a><br />";
    }
    ?>
    </body>
    </html>
    <?php
    }
    else 
    {
    header('Location: ../../connection.php');
    }
    ?>
    Et la seconde "apercu.php"

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php 
    // On démarre la session
    session_start();
     
    include ("config.php"); 
    if ($_SESSION['role'] == "admin") 
    {
    ?>
     
    <?php
    if ( isset($_GET['id']) )
    {
    $id = intval ($_GET['id']);
     
    //echo '<pre>', print_r($GLOBALS), '</pre>'; 
     
    $connexion= mysql_connect($MyServeur,$MyLogin,$MyPass) or die ("Erreur, connexion à la base de données impossible");
    mysql_select_db($MyBase,$connexion);
     
    $req = "SELECT id, type, fichier ".
    "FROM documents WHERE id = ".$id;
    $r = mysql_query ($req) or die (mysql_error ());
     
    if(mysql_num_rows($r) == 1) 
    {
    $type = @mysql_result($r, 0, "type");
    $donnees = @mysql_result($r, 0, "fichier");
    header("Content-type: $type");
    echo $donnees;
    }
    else
    {
    echo "Erreur, pas trouvée le fichier";
    }
    }
    else
    {
    echo "Mauvais id d'image";
    }
     
     
     
    //$col = mysql_fetch_array ($ret);
    //if ( !$col['id'] )
    //{
    //echo "Id d'image inconnu";
    //}
    //else
    //{
    //header ("Content-type: ".$col['type']);
    //print $col['fichier'];
    //exit(); 
    //}
    //}
    //else
    //{
    //echo "Mauvais id d'image";
    //}
    ?>
    <?php
    }
    else 
    {
    header('Location: ../../connection.php');
    }
    ?>
    Extrait de ma BDD concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    `documents` (
      `id` int(11) NOT NULL auto_increment,
      `nom` varchar(50) NOT NULL default '',
      `description` varchar(100) NOT NULL default '',
      `taille` varchar(10000) NOT NULL,
      `type` varchar(30) NOT NULL default '',
      `fichier` longblob NOT NULL,
      `date` varchar(20) NOT NULL,
      `chemin` varchar(200) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=61 ;
    Voila, donc la variable en GET passe très bien entre les deux pages, l'erreur survient aux moment du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header ("Content-type: ".$col['type']);
    et s'affiche ainsi :
    Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Proto1\Admin\Documents\apercu.php:10) in C:\wamp\www\Proto1\Admin\Documents\apercu.php on line 31
    Après cette erreur s'affiche tout le code blob du fichier. Exemple :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    ÿØÿà�JFIF���d�d��ÿþ�Adobe ImageReadyÿì�Ducky�����.��ÿî�Adobe�dÀ���ÿÛ�„�      )))))//////////     ((&((//////////ÿÀ��Ô"�ÿÄ�ª�������������������������������!1AQaq"‘¡2±ÁBÑáR#ðñbr’3‚¢ÂST5�������!1AqQa‘"2¡ÁÑBR±rCðáñ3b‚Â#$ÿÚ���?�çlŠ-’.iWY¤Ñ)iîJÀ$'{TN p9(G"¶<ÄE¸ã¼{ÕæÌ’䥺º@ïÔ,;MQÈ,;©€ï%U\�ªÕßn?²OÁT[A':*ÍäŒ  3Zäi€E6µ¼J‰?‰Ç¨*ÛçûÒìÁZq6n[˜»&»#ZÒªªíoKÅ]q¤ÜŒéµ

    Voila merci de vos idées j'attends vraiment un peut d'aide car ce problème me bloque réellement dans mon avancement et je commence a prendre beaucoup de retard, merci d'avance.

  2. #2
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    salut
    le problème c'est que tu essayes d'afficher ton image directement dans ta page. Il faut que tu appelles le code qui lit et affichage l'image à partir de la bdd dans une balise img.
    Je m'étais amusé à faire ça une fois : voici le code http://kz.objectis.net/php/database/...in-a-database/
    tu remarques que j'ai 3 pages.

Discussions similaires

  1. Image sous la forme d'un champ texte
    Par simplyc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/01/2014, 16h54
  2. Probleme affichage d'une procedure stockée sous WRS
    Par ganjah06 dans le forum Outils BI
    Réponses: 2
    Dernier message: 24/03/2010, 14h42
  3. Réponses: 2
    Dernier message: 10/09/2007, 19h03
  4. Réponses: 1
    Dernier message: 11/08/2005, 17h33
  5. [DOM] Créer un fichier XML sous une forme bien précise
    Par LaseLiep dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 09/06/2005, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo