Cgi-html
kate
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
ça fait dejà 4 jours que je suis bloqué alors que j'ai l'impression que c'est juste un petit truc qui me bloc.
voilà:
j'ai un programme qui prend comme argument des elements texte "des données genomique expATCGGTACCTAGCAA" et qui renvoi en sortie une image qui contient un graphe
mon probleme c'est d'afficher l'image en sortie j'ain essayer avec le code si dessous mais ça m'affiche une page noir:
print "Content-type: image/gif\n\n";
print '<img src="/usr/lib/cgi-bin/test.gif">';
merci pour votre aide
ça fait dejà 4 jours que je suis bloqué alors que j'ai l'impression que c'est juste un petit truc qui me bloc.
voilà:
j'ai un programme qui prend comme argument des elements texte "des données genomique expATCGGTACCTAGCAA" et qui renvoi en sortie une image qui contient un graphe
mon probleme c'est d'afficher l'image en sortie j'ain essayer avec le code si dessous mais ça m'affiche une page noir:
print "Content-type: image/gif\n\n";
print '<img src="/usr/lib/cgi-bin/test.gif">';
merci pour votre aide
A voir également:
- Cgi-html
- Editeur html - Télécharger - HTML
- Espace html ✓ - Forum HTML
- [**] Balise pour un espace vide en hml. Merci ✓ - Forum Webmastering
- /Var/www/html/index.html ✓ - Forum Linux / Unix
- Html download - Télécharger - HTML
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
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
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";
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
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.
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
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 ?
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
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 ?
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 ?
ç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
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: ?
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 ?
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
(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.
(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
!!!