Voici comment servir du contenu binaire avec mason (en mode download):
- %# file.html
- <%init>
- use Apache2::Const qw(OK);
- my $content = ... ; # Votre contenu binaire
- my $mimeType = 'application/pdf' ; # par exemple
- my $fileName = 'rapport.pdf' ;
- $m->clear_buffer; # On vide le buffer de tout contenu precedant
- $r->content_type($mimeType) ; # Reglage du type mime
- $r->headers_out->add('Content-Disposition' => "attachment; filename=$fileName");
- # Nom du fichier
- binmode STDOUT ; #Sortie purement binaire
- print STDOUT $content; # Les donnee
- $m->abort(OK); # C'est fini
- </%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 :
- <LocationMatch "/file.pdf$">
- SetHandler perl-script
- PerlHandler HTML::Mason::ApacheHandler
- </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.