OVH Cloud OVH Cloud

Renvoyer un fichier binaire via CGI

2 réponses
Avatar
Gauthier
Bonjour à tous,

J'ai un script CGI qui renvoit au visiteur des fichiers divers, html,
txt, et autres. Ces fichiers étant situés, dans l'arborescence,
en dehors de l'espace accessible au serveur web, je ne peut pas me
contenter de créer un lien. Donc j'envoie l'en-tête http et le fichier
ligne par ligne. Pour un fichier txt, j'ai inséré

if (-T $file) {
print "Content-type: text/plain\n\n";
open TXT,"<$file" ;
while(<TXT>) {
print
}
close TXT;
}

J'aimerais savoir comment faire dans le cas des fichiers binaires - en
particulier les images. La commande "open" divise-t-elle toujours le fichier
en "lignes" ?

Que me conseillez-vous ?
--
^^ Gauthier
(_____/°°-ç
| \_`-"
)/@mmm||
\nn \nn FOE-Belgium : http://www.amisdelaterre.be

2 réponses

Avatar
Nicolas George
Gauthier wrote in message
:
J'ai un script CGI qui renvoit au visiteur des fichiers divers, html,
txt, et autres. Ces fichiers étant situés, dans l'arborescence,
en dehors de l'espace accessible au serveur web, je ne peut pas me
contenter de créer un lien. Donc j'envoie l'en-tête http et le fichier
ligne par ligne.


Il vaudrait mieux servir le fichier directement, pourtant : servir un
contenu statique comme du contenu dynamique présente de nombreux
inconvénients aussi bien pour le client que pour le serveur.

J'aimerais savoir comment faire dans le cas des fichiers binaires - en
particulier les images. La commande "open" divise-t-elle toujours le fichier
en "lignes" ?

Que me conseillez-vous ?


Lire la doc de perl ? En particulier, dans perlfunc, ce qui est listé sous
l'intitulé « Input and output functions ».

Avatar
Emmanuel Florac
Le Sun, 28 May 2006 08:38:02 +0000, Gauthier a écrit :


J'aimerais savoir comment faire dans le cas des fichiers binaires - en
particulier les images. La commande "open" divise-t-elle toujours le fichier
en "lignes" ?


Tu peux faire pareil, simplement, tu envoies le bon content-type avant,
c'est tout.

--
Il y a toujours un bug de plus.
Loi de Lubarsky.