Problème affichage fichier de type blob
Benorito
-
milicy Messages postés 7 Statut Membre -
milicy Messages postés 7 Statut Membre -
Bonjour,
J'ai un gros problème depuis plusieurs jours, je réalise actuellement un intranet et ayant peut de fichiers a stocker j'ai choisi d'enregistrer mais fichier en type blob. L'insertion se passe très bien mais j'ai un souci pour les ouvrir, voici le code :
liste.php
Le second : apercu.php
Voila la variable se transmet bien pourtant dans le get, mai le ficchier ne s'affiche pas le code du blob selement et un erreur sur le header Content Type. Je vous donne la structure de ma table :
Merci d'éclairer ma lanterne, merci d'avance.
J'ai un gros problème depuis plusieurs jours, je réalise actuellement un intranet et ayant peut de fichiers a stocker j'ai choisi d'enregistrer mais fichier en type blob. L'insertion se passe très bien mais j'ai un souci pour les ouvrir, voici le code :
liste.php
<?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');
}
?>
Le second : apercu.php
<?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;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
print $col[2];
}
}
else
{
echo "Mauvais id d'image";
}
?>
<?php
}
else
{
header('Location: ../../connection.php');
}
?>
Voila la variable se transmet bien pourtant dans le get, mai le ficchier ne s'affiche pas le code du blob selement et un erreur sur le header Content Type. Je vous donne la structure de ma table :
CREATE TABLE `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 ;
Merci d'éclairer ma lanterne, merci d'avance.
A voir également:
- Problème affichage fichier de type blob
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
7 réponses
Salut,
Il y a un ou deux petits détails à corriger ....
Premièrement, tu dois mettre un exit(); juste après le print d'information.
Pour le premier header, qu'est-ce qui est stocké dans la BD ? image/jpeg par exemple ?
Comme dans les bases de données le consepte d'ordre n'existe pas (il n'y a pas une colonne avant une autre, et de même avec les lignes), je te conseil de changer les $col[1] par des $col[type] ; ça te permet en plus de relire plus facilement ton code, et de mieux voir les erreurs.
@Bientôt
Il y a un ou deux petits détails à corriger ....
Premièrement, tu dois mettre un exit(); juste après le print d'information.
Pour le premier header, qu'est-ce qui est stocké dans la BD ? image/jpeg par exemple ?
Comme dans les bases de données le consepte d'ordre n'existe pas (il n'y a pas une colonne avant une autre, et de même avec les lignes), je te conseil de changer les $col[1] par des $col[type] ; ça te permet en plus de relire plus facilement ton code, et de mieux voir les erreurs.
@Bientôt
Je crois que j'ai oublié de contrôler un truc ....
Pour que ça marche, tu dois faire un mysql_fetch_array et non mysql_fetch_row ... désolé
Pour que ça marche, tu dois faire un mysql_fetch_array et non mysql_fetch_row ... désolé
Bonjour,
Alors le message qui s'affiche est le suivant :
"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", la ligne 31 étant celle ci : "header ("Content-type: ".$col['type']);".Ensuite s'affiche le code du blob exemples :
"ÿØÿà�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¤ÜŒéµ >gù+MÆê0ß«5ûÒo+¸2ÕFþwP›“ÿ�õûù?5ÉÚô–î»YF7!(L‹„ãl{»Õkj¹#ÝYXÞÃoj6¡j“Ô†ª*òÕ¦:¿';Ø1‘³†Àqc)\spø-óÊÜÊPî뺹<ίŠßÅiïaXÜòN»s¤]¦ª=œQÅ'´Ü(Tmš)KŽÙYp«U¨Éc·ÿ�r>*ã÷»–mlʦ̮”q[ê}›œ¨H2U׌kœÝÍ¥s[½Üÿ�ZqßîGê%L“u/ÔÔ{Ô3_C{‚Þ'1õÄ–<£õD…XýÐÅk¡ÜÁ¢[¤¹þ@‰ÎsêÀø'[`ð›8¬eT·ÉJ5ø¤I² s‚Ò³RË<}NæÝw0;^5½YòÐðÇcBTwºDÄsbÉj;÷V[ûb.|@*±¿É/.pÚQÍãjzPÅF® n¬*«¶ö» î¢tC"sQÚme¹ŸH¨«¨@[ˆ„CE"wx–ŠÕÎÏ‹^¥ 8«`ú¦JË;l2'©%ne‚Ž>*HŠ1ò…^ë‰ÎîÌ(löШ¶<ê¤vÛi>«Q?%“䥕ínT......
Merci encore et toujours d'avance
Alors le message qui s'affiche est le suivant :
"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", la ligne 31 étant celle ci : "header ("Content-type: ".$col['type']);".Ensuite s'affiche le code du blob exemples :
"ÿØÿà�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¤ÜŒéµ >gù+MÆê0ß«5ûÒo+¸2ÕFþwP›“ÿ�õûù?5ÉÚô–î»YF7!(L‹„ãl{»Õkj¹#ÝYXÞÃoj6¡j“Ô†ª*òÕ¦:¿';Ø1‘³†Àqc)\spø-óÊÜÊPî뺹<ίŠßÅiïaXÜòN»s¤]¦ª=œQÅ'´Ü(Tmš)KŽÙYp«U¨Éc·ÿ�r>*ã÷»–mlʦ̮”q[ê}›œ¨H2U׌kœÝÍ¥s[½Üÿ�ZqßîGê%L“u/ÔÔ{Ô3_C{‚Þ'1õÄ–<£õD…XýÐÅk¡ÜÁ¢[¤¹þ@‰ÎsêÀø'[`ð›8¬eT·ÉJ5ø¤I² s‚Ò³RË<}NæÝw0;^5½YòÐðÇcBTwºDÄsbÉj;÷V[ûb.|@*±¿É/.pÚQÍãjzPÅF® n¬*«¶ö» î¢tC"sQÚme¹ŸH¨«¨@[ˆ„CE"wx–ŠÕÎÏ‹^¥ 8«`ú¦JË;l2'©%ne‚Ž>*HŠ1ò…^ë‰ÎîÌ(löШ¶<ê¤vÛi>«Q?%“䥕ínT......
Merci encore et toujours d'avance
La première erreur implique le fait que t'as dme erreur ...
Qu'est-ce qui est exactement stocké dans ton champ 'type' ?
Qu'est-ce qui est exactement stocké dans ton champ 'type' ?
Bonjours,
Déja merci beaucoup de me répondre excuse pour mon retard pour te répondre, le champ type est complété
avec ceci :
image/jpeg
ou encore
application/pdf
...
Ceci afin de spécifié le type de fichier comme expliqué dans les tuto pourtant ils n'ont pas l'air d'être pris en compte, merci de ton aide et merci d'avance.
Déja merci beaucoup de me répondre excuse pour mon retard pour te répondre, le champ type est complété
avec ceci :
image/jpeg
ou encore
application/pdf
...
Ceci afin de spécifié le type de fichier comme expliqué dans les tuto pourtant ils n'ont pas l'air d'être pris en compte, merci de ton aide et merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je suis toujours ôtant perdu, j'ai changer les les $col[1] par des $col[type] etc et et mis le exit et le résultat est maintenant différent, il m'afficher "Id d'image inconnu" du 1er If. Pourtant la variable passe dans l'adresse : "http://localhost/Proto1/Admin/Documents/apercu.php?id=60". Je te remet mon code, si tu peu m'aiguiller encore un peut se serait cool :
<?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; $ret = mysql_query ($req) or die (mysql_error ()); $col = mysql_fetch_row ($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'); } ?>Merci d'avance