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

Langage PHP Discussion :

Stream, BLOBs et Postgresql [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Stream, BLOBs et Postgresql
    Bonsoir,
    Je suis en train de tester PostgreSQL avec PHP en utilisant le stockage d’image dans la base de données.
    Pour cela j’utilise l’interface PDO pour PostgreSQL, mais je n’arrive pas à récupérer mes champs de type BLOBs (à travers un type oid) ça me retourne que des flux vide (pas nul).
    Je précise qu'en utilisant pgAdmin j'arrive tout à fait à récupérer mes champs et à les sauvegarder en fichiers.
    Voici mon code :
    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
     
    try {
        $pdo = new PDO($db_dns);
        $sql = "select med_stockage, tym_label from media where tym_label = 'jpg'";
        $tuples = $pdo->query($sql);
        $tuple = $tuples->fetch(PDO::FETCH_ASSOC);  
        $rawimage = $pdo->pgsqlLOBOpen($tuple['med_stockage']);
        if($rawimage != false) {
            // header('Content-type: image/' . $tuple['tym_label']);
            if(!fpassthru($rawimage))
                 print 'Erreur fpassthru()';
        } else 
            print 'Erreur pgsqlLOBOpen()';
    } catch(PDOException $e) {
        print_r($e->getMessage() . '<br />' . $e->getTraceAsString());
    }
    Édit: le problème est sensiblement le même en utilisant "l'ancienne" interface.
    Édit2: J'ai aussi essayé en suivant le modèle de la documentation PDO :
    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
     
    try {
        $co = new PDO($db_dns);
        $co->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $co->beginTransaction();
     
        $sql = "select med_stockage, tym_label from media where tym_label = ?";
        $st = $co->prepare($sql);
     
        $st->bindColumn('med_stockage', $largeObject, PDO::PARAM_LOB);
        $st->bindColumn('tym_label', $type, PDO::PARAM_STR);
     
        if($st->execute(array('jpg'))) {  
            $tuple = $st->fetch(PDO::FETCH_BOUND); 
     
            // header('Content-type: image/' . $type);
     
            if(fpassthru($largeObject) === false) 
                print 'Erreur fpassthru()';
        } else 
            print 'Erreur PDO->execute()';
        $co->commit();
    } catch(PDOException $e) {
        print_r($e->getMessage() . '<br />' . $e->getTraceAsString());
    }
    Merci d'avance pour vos réponses.

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Est-ce qu'un modérateur pourrait déplacer mon message dans la section PHP & PostgreSQL ?
    J'ai finalement trouvé le dysfonctionnement, j'avais fait des tests uniquement sur des images insérées dans la base par le super utilisateur (le seul pouvant directement le faire en SQL). De ce fait les images étaient la propriété du super utilisateur donc impossible de lire avec un autre utilisateur sans rectifier les droits; une erreur bête .


    Merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PostGresql, BLOB, Input/OutputStream, setBinaryStream
    Par Levaillant dans le forum Langage
    Réponses: 9
    Dernier message: 04/04/2011, 13h59
  2. Ecriture d'un blob dans une base postgresql
    Par isoman dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/02/2009, 12h24
  3. [JSP]Lecture Blob par streaming
    Par JohnBlatt dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/06/2006, 17h11
  4. [BLOB]Enreg Stream dans Field
    Par sbeu dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2004, 16h06
  5. [Blob] PostGreSQL Beta4 pour Windows
    Par YanK dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/10/2003, 11h46

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