(Terug) naar scripts op heeck.nl of heeck.nl

******************************************************************************************
mimeheader

Deze heb ik gemaakt voor een cgi-scriptje dat verschillende soorten bestanden op moet kunnen hoesten en deze, indien mogelijk en expliciet gewenst in een browservenster weergeeft. Als de gebruiker (in het aanroepende formulier) heeft aangegeven de file niet te willen bekijken maar te downloaden wordt een downloaddialoog gestart, dat doe je door in de header iets mee te geven waar browsers standaard waarschijnlijk geen soep van kunnen koken: application/x-unknown-download, of application/x-do-not-try-to-parse, verzin maar wat.

Een overzicht van de bestaande headertypes vind je bij de IANA.

Gebruiksvoorbeelden:
  • $header = mimeheader( "presentatie.ppt", "ppt", "view" );
    print $header geeft dan: Content-Type: application/vnd.ms-powerpoint\n\n
    en zal de daaropvolgende content indien mogelijk in het browservenster tonen.
  • $header = mimeheader( "presentatie.ppt", "ppt", "download" );
    print $header geeft dan: Content-Type: application/x-unknown-download\n
    Content-Disposition: attachment; filename=presentatie.ppt\n\n

    wat altijd een downloaddialoog start, ook als de browser dit type bestanden kan weergeven.
01 sub mimeheader{
02 my ( $file, $type, $action ) = @_;
03 my %mimetypes = (
04   pdf => "Content-type: application/pdf\n\n";
05   doc => "Content-Type: application/msword\n\n",
06   ppt => "Content-Type: application/vnd.ms-powerpoint\n\n",
07   xls => "Content-Type: application/vnd.ms-excel\n\n",
08   gif => "Content-Type: image/gif\n\n",
09   jpg => "Content-Type: image/jpeg\n\n",
10   bmp => "Content-Type: image/bmp\n\n",
11   htm => "Content-Type: text/html\n\n",
12   txt => "Content-Type: text/plain\n\n",
13 );
14 if ( defined $mimetypes{$type} and $action eq "view" ){
15   return $mimetypes{$type};
16 } else {
17   return "Content-Type: application/x-unknown-download\n
             Content-Disposition: attachment; filename=$file\n\n";
18 }
19 }



* Begin **********************************************************************************