web-dev-qa-db-fra.com

Voir le contenu de blob dans phpMyAdmin

Désolé pour la question Noob, mais que signifie le bouton entouré et comment puis-je afficher le contenu d'un blob? alt text http://www.rigel222.com/images/blobcontent.jpg

35
Joshua

les versions précédentes de phpmyadmin avaient un paramètre appelé 

$cfg['ShowBlob']              = TRUE;

Cela vous permettrait de visualiser le contenu des blobs dans le navigateur. Vous devriez noter que cela provoquerait un chaos si vous stockiez des fichiers binaires dans des blobs, car vous verriez un nombre infini de gobblygok dans la fenêtre du navigateur. Certaines personnes (comme moi) ont décidé que leur application devait utiliser des types BLOB pour stocker du texte (cela semblait être une bonne décision à l'époque, et si je me souviens bien, certaines de mes réflexions ont été prises en compte dans la décision). Cependant, phpmyadmin a décidé de décourager cela en rendant obsolète ce paramètre de configuration. C'est compréhensible, car cela pourrait provoquer une demande d'assistance importante. Apparemment, l'idée était de déplacer les gens sur les types de champs TEXT.

Heureusement, le contenu des blobs a été déplacé dans l'interface utilisateur plutôt que dans la configuration.

Le moyen le plus simple de voir le contenu des blobs lorsque vous naviguez consiste à cliquer sur le lien:

+ Options

Heureusement, votre capture d'écran affiche déjà le + Options dans la partie supérieure de l'image.

Ce qui affichera un formulaire qui vous permettra d'afficher des blobs (et des binaires). Cliquez dessus pour l'ajouter à votre choix dans la session, en veillant à ce que le contenu soit visible à partir de ce moment.

Vous pouvez également obtenir le même résultat en utilisant la vue d'impression:

Aperçu avant impression (avec textes intégraux) 

Qui habite au bas de la page. 

Malheureusement, ces deux techniques ne sont pas utiles si vous souhaitez toujours afficher le blob, car il semble se réinitialiser fréquemment. Vous pouvez résoudre ce problème en ajoutant la ligne

$_GET['display_blob'] = true;

Au début du fichier sql.php. Je pense qu'il pourrait y avoir une meilleure façon de faire cela, et j'espère que quelqu'un d'autre pourra en parler ...

(note: comme Rodrigo l'a fait remarquer, vous pouvez obtenir cet effet manuellement en ajoutant &display_bob=true à l'URL)

Votre question spécifique sur le bouton "Choisir un fichier" est simple. La plupart des blobs sont utilisés pour stocker des fichiers numériques dans la base de données. Ce bouton vous permet de télécharger un nouveau fichier dans la base de données. Si vous sélectionnez un fichier et cliquez sur "go", il essaiera de ranger le contenu de ce fichier dans la colonne blob pour vous. 

Juste pour noter, afficher simplement le contenu du blob n’est probablement pas ce que les autres utilisateurs veulent. Lorsque je regarde le "résumé des tâches" avant d'utiliser cette option pour afficher les tâches, je vois des tailles de tâches de 55 octets maximum. Votre exemple a des valeurs plus grandes, car il semble que vous stockiez de très petits fichiers texte, ce qui, je suppose, signifie des paragraphes de texte. Si la taille est supérieure à 10 s de kilo-octets, il s'agit probablement d'un fichier binaire qui affichera simplement gooblegok.

Si vous souhaitez télécharger des fichiers binaires intelligemment (plutôt que de les afficher sous forme de texte), je pense que vous devez vous pencher sur ce que phpmyadmin appelle blobstreaming.

33
ftrotter

Mettez &display_blob=true à la fin de votre URL.

15
Rodrigo

Enregistrer le lien sous forme de fichier txt

Vous pouvez cliquer avec le bouton droit sur phpMyAdmin et enregistrer le lien en tant qu'extension de fichier txt pour afficher le type de fichier texte blob

3
Bill

Pour les nouveaux visiteurs, une autre façon d'afficher les colonnes BLOB est la fonction QUOTE () . Vous pouvez créer une vue pour plus de commodité. (Une vue se comporte comme une table mais c'est vraiment une sorte de requête sauvegardée):

CREATE VIEW log_text AS SELECT BlobID, FileName, CAST(QUOTE(Content) AS CHAR) FROM log;

Vous devrez CASTER le résultat en tant que CHAR, car QUOTE (binaire) est toujours binaire. Cela peut causer un certain chaos (comme le dit @ftrotter) car QUOTE ne traduit que les caractères de contrôle, pas les caractères supra-ASCII.

 enter image description here

Pour moins de chaos, utilisez HEX () .

2
Bob Stein

Je pense que la meilleure solution est de changer cette ligne:

 $ cfg ['Servers'] [$ i] ['extension'] = 'mysql'; 

pour ça:

 $ cfg ['Servers'] [$ i] ['extension'] = 'mysqli'; 

Si vous avez l'extension mysqli disponible, utilisez-la. Il est plus sécurisé, un peu plus optimisé et gère mieux le type BLOB d’utf-8 par défaut. Vos entrées [BLOB] devraient commencer à apparaître avec leurs valeurs sans avoir à ajouter d’autres options de configuration spéciales.

2
cwd

Les nouvelles versions de PHPMyAdmin semblent nécessiter une solution légèrement différente

$cfg['ProtectBinary'] = FALSE;

Placez ceci à la fin du fichier /etc/phpmyadmin/config.inc.php 

Ou en utilisant cette doublure

echo "\$cfg['ProtectBinary'] = FALSE;" | Sudo tee -a /etc/phpmyadmin/config.inc.php

Cela a fonctionné pour moi sur PHPMyAdmin version 3.4.10.1deb1

2
wiifm

La boîte de dialogue "Choisir un fichier" vous permet de choisir un fichier sur votre poste de travail et de le télécharger à l'intérieur de la colonne blob pour cette ligne.

Si votre BLOB contient des images JPEG ou PNG, vous pouvez réellement afficher leurs vignettes lors de la navigation, l’image complète étant affichée lorsque vous cliquez sur la vignette. Voir https://phpmyadmin.readthedocs.org/en/latest/transformations.html .

1
Marc Delisle

J'ai ajouté ceci à config.inc.php qui m'a tant aidé

# Show BLOB data on table browse pages.  Hack to hardcode all requests.
$_REQUEST['display_blob'] = true;
0
Demodave