lundi 15 octobre 2007

Servir du contenu binaire

Voici comment servir du contenu binaire avec mason (en mode download):

  1. %# file.html
  2. <%init>
  3. use Apache2::Const qw(OK);
  4. my $content = ... ; # Votre contenu binaire
  5. my $mimeType = 'application/pdf' ; # par exemple
  6. my $fileName = 'rapport.pdf' ;
  7. $m->clear_buffer; # On vide le buffer de tout contenu precedant
  8. $r->content_type($mimeType) ; # Reglage du type mime
  9. $r->headers_out->add('Content-Disposition' => "attachment; filename=$fileName");
  10. # Nom du fichier
  11. binmode STDOUT ; #Sortie purement binaire
  12. print STDOUT $content; # Les donnee
  13. $m->abort(OK); # C'est fini
  14. </%init>
Pour afficher le contenu binaire en ligne (par exemple dans le cas d'une image, ou pour provoquer l'affichage d'un pdf par le plugin du navigateur), il suffit de supprimer la ligne 9. Si ca perturbe vos visiteurs d'avoir une ressource en .html qui sert un pdf, vous pouvez toujours appeller votre fichier file.pdf , et ajouter la chose suivante dans la conf d'apache :
  1. <LocationMatch "/file.pdf$">
  2. SetHandler perl-script
  3. PerlHandler HTML::Mason::ApacheHandler
  4. </LocationMatch>
On spécifie ainsi a apache qu'il doit laisser mason s'occuper de la ressource. C'est tout pour aujourd'hui ! Voir la liste des types mime.

2 commentaires:

Anonyme a dit…

'lut,
Merci pour ce petit bout de code : c'est exactement ce que je cherchais.
Je fais mes 1ers pas avec Mason : ton blog passe tout de suite dans mes favoris :o)

jeteve a dit…

You're welcome. N'hesite pas a me suggerer des idees d'articles si besoin :)