A voir également:
- Cgi-html
- Editeur html - Télécharger - HTML
- &Nbsp html - Forum HTML
- Espace en html - Astuces et Solutions
- Espace html ✓ - Forum HTML
- Br html - Forum CSS
20 réponses
Bonjour
Tu mélanges plusieurs manières d'afficher une image :
. Soit tu mets un lien vers cette image, dans une page HTML classique :
c'est la version print '<img src="/usr/lib/cgi-bin/test.gif">'; (mais SANS Content-type avant)
. Soit tu envoies une vraie image (sans HTML) et là :
1 - tu dois indiquer le Content-type, mais dans un header, pas dans un print
2 - tu dois ensuite envoyer le contenu du fichier image, et pas un lien sur l'image :
Dans ce dernier cas, ton script ne doit rien envoyer d'autre que l'image
Tu mélanges plusieurs manières d'afficher une image :
. Soit tu mets un lien vers cette image, dans une page HTML classique :
c'est la version print '<img src="/usr/lib/cgi-bin/test.gif">'; (mais SANS Content-type avant)
. Soit tu envoies une vraie image (sans HTML) et là :
1 - tu dois indiquer le Content-type, mais dans un header, pas dans un print
2 - tu dois ensuite envoyer le contenu du fichier image, et pas un lien sur l'image :
header('Content-type: image/gif'); readfile('/usr/lib/cgi-bin/test.gif');
Dans ce dernier cas, ton script ne doit rien envoyer d'autre que l'image
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 14:45
15 mai 2012 à 14:45
Bonjour le père et merci pour ta réponse c'et très gentil.
sauf que ça marche toujours pas pour moi.
etant donnée que je dois renvoyer plusieurs resultats je me suis donc orienté vers la 1ere possibilitée.
voila le code que j'ai mis
print "Content-type: text/html\n\n";
print '<img src="/usr/lib/cgi-bin/test.jpeg">';
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>avis CGI du programme <i>comments.pl</i></h1>\n";
print "<p><b>commentaire:</b> $formulaire{commentaire}</p>\n";
print "</body></html>\n";
cela m'affiche juste un petit carré aulieu de l'image voulu
si j'enleve cette ligne: print "Content-type: text/html\n\n";
j'ai un message d'erreur qui s'affiche
sauf que ça marche toujours pas pour moi.
etant donnée que je dois renvoyer plusieurs resultats je me suis donc orienté vers la 1ere possibilitée.
voila le code que j'ai mis
print "Content-type: text/html\n\n";
print '<img src="/usr/lib/cgi-bin/test.jpeg">';
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>avis CGI du programme <i>comments.pl</i></h1>\n";
print "<p><b>commentaire:</b> $formulaire{commentaire}</p>\n";
print "</body></html>\n";
cela m'affiche juste un petit carré aulieu de l'image voulu
si j'enleve cette ligne: print "Content-type: text/html\n\n";
j'ai un message d'erreur qui s'affiche
Utilisateur anonyme
15 mai 2012 à 15:06
15 mai 2012 à 15:06
Quel message d'erreur ?
Et dans tous les cas, tu ne devrais rien avoir avant <!DOCTYPE.
Si tu dois avoir plusieurs images dans ta page, il faut effectivement les mettre sous forme de balise <img (j'ai eu tort de parler de 'lien' dans ma première réponse.)
Mais dans cette balise img, il faut une url qui corresponde à une adresse effectivement accessible sur internet. Or ton adresse '/usr/lib/cgi-bin/test.gif' correspond à une adresse dans un système de fichiers, et de plus le dossier cgi-bin n'est probablement pas accessible.
Tes images devraient être dans un dossier accessible. Crée un sous-dossier de celui où se trouve ton script, appelons-le images par exemple :
Et dans tous les cas, tu ne devrais rien avoir avant <!DOCTYPE.
Si tu dois avoir plusieurs images dans ta page, il faut effectivement les mettre sous forme de balise <img (j'ai eu tort de parler de 'lien' dans ma première réponse.)
Mais dans cette balise img, il faut une url qui corresponde à une adresse effectivement accessible sur internet. Or ton adresse '/usr/lib/cgi-bin/test.gif' correspond à une adresse dans un système de fichiers, et de plus le dossier cgi-bin n'est probablement pas accessible.
Tes images devraient être dans un dossier accessible. Crée un sous-dossier de celui où se trouve ton script, appelons-le images par exemple :
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n"; print "<html><head><title>CGI-Feedback</title></head>\n"; print "<body><h1>avis CGI du programme <i>comments.pl</i></h1>\n"; print "<p><b>commentaire:</b> $formulaire{commentaire}</p>\n"; print '<img src="images/test.jpeg">'; print "</body></html>\n";
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 15:33
15 mai 2012 à 15:33
bonjour le père et merci pour ton aide précieuse
voila le message d'erreur
malformed header from script. Bad header=<!DOCTYPE HTML PUBLIC "-//W3C/: test.pl
j'ai changé les droits du cgi-bin en 777 mais comme meme pour etre sur j'ai essayé avec un répertoire accéssible mais ça marche toujours pas
en plus je suis pas sur de faire appel avec cgi a des image qui ne se trouve pas dans le cgi-bin
merci
voila le message d'erreur
malformed header from script. Bad header=<!DOCTYPE HTML PUBLIC "-//W3C/: test.pl
j'ai changé les droits du cgi-bin en 777 mais comme meme pour etre sur j'ai essayé avec un répertoire accéssible mais ça marche toujours pas
en plus je suis pas sur de faire appel avec cgi a des image qui ne se trouve pas dans le cgi-bin
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
15 mai 2012 à 15:52
15 mai 2012 à 15:52
J'ai l'impression d'être allé trop vite en besogne en supposant que tu écrivais en PHP. Quel langage utilises-tu en fait ?
Les droits du cgi-bin en 777 n'ont aucun rapport avec le sujet : il s'agit de droit d'accès du système de fichiers, alors qu'il faut des droits d'accès par le serveur http.
Pour l'appel des images, ce n'est pas ton script qui y fait directement appel. Ton script place une balise <img > dans la page qu'il envoie au visiteur, et c'est le navigateur du visiteur qui va venir demander la page. C'est pour ça qu'il faut une adresse qui soit accessible par http.
Les droits du cgi-bin en 777 n'ont aucun rapport avec le sujet : il s'agit de droit d'accès du système de fichiers, alors qu'il faut des droits d'accès par le serveur http.
Pour l'appel des images, ce n'est pas ton script qui y fait directement appel. Ton script place une balise <img > dans la page qu'il envoie au visiteur, et c'est le navigateur du visiteur qui va venir demander la page. C'est pour ça qu'il faut une adresse qui soit accessible par http.
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 16:08
15 mai 2012 à 16:08
bonjour
alors j'utilise perl en faisant appel a cgi
j'ai pas très bien compris par une adresse accecible par http
j'ai essayé avec cgi-bin et le home directory!!
merci beaucoup
alors j'utilise perl en faisant appel a cgi
j'ai pas très bien compris par une adresse accecible par http
j'ai essayé avec cgi-bin et le home directory!!
merci beaucoup
Utilisateur anonyme
15 mai 2012 à 16:16
15 mai 2012 à 16:16
Donc je t'ai dit une bêtise en disant "surtout rien avant <!DOCTYPE". Toutes mes excuses.
Je re-deviens d'accord avec
Par contre, perl ou pas perl, la balise <img> ne peut pas être, elle, avent <!DOCTYPE. C'est le html qui l'impose.
S'agit-il d'un script que tu lances directement (je ne sais pas trop comment, je ne connais pas perl) , ou bien est-ce un script que tu lances dans la barre d'adresse d'un navigateur ?
Je re-deviens d'accord avec
print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
Par contre, perl ou pas perl, la balise <img> ne peut pas être, elle, avent <!DOCTYPE. C'est le html qui l'impose.
S'agit-il d'un script que tu lances directement (je ne sais pas trop comment, je ne connais pas perl) , ou bien est-ce un script que tu lances dans la barre d'adresse d'un navigateur ?
bg62
Messages postés
23665
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
31 décembre 2024
2 392
15 mai 2012 à 16:18
15 mai 2012 à 16:18
bienvenue ;)
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 16:28
15 mai 2012 à 16:28
j'ai un fichier test.htm qui permet de parcourir un fichier .txt et l'envoi au script perl test.pl qui fait appel lui a un progamme qui génere des graphes des images donc.
jusqu'ici c'est bon pour moi.
maintenant je veux mettre en sortie html ces fameux graphes.
merci
jusqu'ici c'est bon pour moi.
maintenant je veux mettre en sortie html ces fameux graphes.
merci
Utilisateur anonyme
Modifié par le père. le 15/05/2012 à 16:37
Modifié par le père. le 15/05/2012 à 16:37
Si tu crées un fichier toto.htm qui contient simplement :
<img src="/usr/lib/cgi-bin/test.gif">
Est-ce que ça affiche bien l'image ?
<img src="/usr/lib/cgi-bin/test.gif">
Est-ce que ça affiche bien l'image ?
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 16:41
15 mai 2012 à 16:41
oui
Utilisateur anonyme
15 mai 2012 à 16:47
15 mai 2012 à 16:47
Alors ça devrait marcher :
Les ' et " sont interchangeables en perl ?
print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n"; print "<html><head><title>CGI-Feedback</title></head>\n"; print "<body>"; print '<img src="/usr/lib/cgi-bin/test.jpeg">'; print "</body></html>\n";
Les ' et " sont interchangeables en perl ?
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 17:12
15 mai 2012 à 17:12
ça marche toujours pas
ça m'affiche une page blanche
j'ai essayé de modifier
print "Content-type: text/html\n\n"; par : print " Content-type:image/jpeg\n\n";
et la j'ai une page noir avec un message d'erreur :
l'image "http://adresse ip/cgi-bin/test.pl" ne peut etre afficher car elle contient des erreur
voila je suis perdu : test.pl n'a jamais été une image!!
merci beaucoup pour ton aide le père
ça m'affiche une page blanche
j'ai essayé de modifier
print "Content-type: text/html\n\n"; par : print " Content-type:image/jpeg\n\n";
et la j'ai une page noir avec un message d'erreur :
l'image "http://adresse ip/cgi-bin/test.pl" ne peut etre afficher car elle contient des erreur
voila je suis perdu : test.pl n'a jamais été une image!!
merci beaucoup pour ton aide le père
Utilisateur anonyme
Modifié par le père. le 15/05/2012 à 17:19
Modifié par le père. le 15/05/2012 à 17:19
Ce que tu vois en changeant le content-type est normal, car tu n'envoies pas une image mais une page html.
Le problème est très probablement uniquement dans la balise <img> qui n'a pas le bon chemin.
Comment fais-tu pour ouvrir le fichier test.htm ? L'ouvres-tu avec le protocole file: ou http: ?
Le problème est très probablement uniquement dans la balise <img> qui n'a pas le bon chemin.
Comment fais-tu pour ouvrir le fichier test.htm ? L'ouvres-tu avec le protocole file: ou http: ?
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 17:21
15 mai 2012 à 17:21
le protocole file:
Utilisateur anonyme
15 mai 2012 à 17:30
15 mai 2012 à 17:30
Quand tu lances le script de mon messege de 16h47, tu obtiens une page blanche. Peux-tu vérifier le code source (avec control-U) de la page obtenue ? Correspond-il bien à ce qu'on attend ?
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
Modifié par breutone le 15/05/2012 à 17:52
Modifié par breutone le 15/05/2012 à 17:52
voila ce que ça m'affiche
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>CGI-Feedback</title></head>
<body><img src="/usr/lib/cgi-bin/test.gif"></body></html>
et puis quand je clic sur le chemin de l'image voila ce que j'obtiens :
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /usr/lib/cgi-bin/test.gif was not found on this server.</p>
<hr>
<address>Apache/2.2.14 (Ubuntu) Server at ad ip Port 80</address>
</body></html>
donc voila le probleme se précise il n'arrive pas a lire l'image
mais où faut il la mettre pour qu'il la reconnaisse car quand je mais <img src="/usr/lib/cgi-bin/test.gif"> dans test.htm l'image s'affiche normalement
merci beaucoup le père
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>CGI-Feedback</title></head>
<body><img src="/usr/lib/cgi-bin/test.gif"></body></html>
et puis quand je clic sur le chemin de l'image voila ce que j'obtiens :
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /usr/lib/cgi-bin/test.gif was not found on this server.</p>
<hr>
<address>Apache/2.2.14 (Ubuntu) Server at ad ip Port 80</address>
</body></html>
donc voila le probleme se précise il n'arrive pas a lire l'image
mais où faut il la mettre pour qu'il la reconnaisse car quand je mais <img src="/usr/lib/cgi-bin/test.gif"> dans test.htm l'image s'affiche normalement
merci beaucoup le père
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 17:57
15 mai 2012 à 17:57
comment faut il changer les droit d'accé du serveur ?
j'utilise apache
merci
j'utilise apache
merci
Utilisateur anonyme
15 mai 2012 à 18:02
15 mai 2012 à 18:02
(tiens, le jpeg est devenu png...)
Malheureusement, j'ignore comment le perl interragit avec le serveur http (c'est bien du http et non pas du file...). Ce qui m'étonne, c'est de voir uen adresse IP qui n'a pas l'air d'être locale. Tu fais tes essais en ligne ? Alors que ton nom de fichier /usr/lib/cgi-bin/test4.png correspond à un nom local.
Malheureusement, j'ignore comment le perl interragit avec le serveur http (c'est bien du http et non pas du file...). Ce qui m'étonne, c'est de voir uen adresse IP qui n'a pas l'air d'être locale. Tu fais tes essais en ligne ? Alors que ton nom de fichier /usr/lib/cgi-bin/test4.png correspond à un nom local.
breutone
Messages postés
10
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
15 mai 2012
15 mai 2012 à 18:22
15 mai 2012 à 18:22
(tiens, le jpeg est devenu png...)
oui car j'ai pensé a un moment que c'est peut etre l'extention qui n'est pas accepter
!!!
oui car j'ai pensé a un moment que c'est peut etre l'extention qui n'est pas accepter
!!!
Utilisateur anonyme
16 mai 2012 à 14:19
16 mai 2012 à 14:19
L'extension, il n'y a aucune raison, tant qu'on reste dans des choses standard. Ce qu'il faut surtout, c'est bien indiquer la bonne.
Il ne faut pas changer les droits d'accès au serveur, il faut mettre l'image dans la partie accessible via le serveur, ce qui n'est sûrement pas le cas de cgi-bin.
Il ne faut pas changer les droits d'accès au serveur, il faut mettre l'image dans la partie accessible via le serveur, ce qui n'est sûrement pas le cas de cgi-bin.