phpbar.de logo

Mailinglisten-Archive

[php] File als download ausgeben

[php] File als download ausgeben

Sebastian Mendel lists at sebastianmendel.de
Don Jun 23 12:38:54 CEST 2005


Steffen Kother wrote:

> wie ich zu meinem download komme, ist mir klar. Beim ersten Aufruf
> funktioniert das auch noch einwandfrei. Aber wenn dann das File direkt
> angeboten werden soll ist essig... :o(
> 
> Eine Ausgabe am Bildschirm bringt mir das Gewollte. Aber beim Downloaden
> schießt er (IE) quer und bringt mir auch nicht den gewünschten
> Dateinamen, sondern "Anschreiben.php?rekl=xx".

was heißt 'quer'?


> header('Content-Transfer-Encoding: binary');

warum 'binary'?



<?php
if ( ! empty( $_REQUEST['rekl'] ) )
{
   $rkl_id = explode( '|', $_REQUEST['rekl'] );
   $rkl_id = $rkl_id[count( $rkl_id )-1];

   $Daten = daten_anschreiben( $db_Verbindung, $rkl_id );
   // wird korrekt befüllt, alle Infos enthalten und da beim 'Nach'-
   // Downloaden Daten aus DB kommen ist $Daten['check'] = true

   if ( empty( $Daten['check'] ) )
   {
       // ...
   }
   else
   {
       $_REQUEST['mode'] = 'Drucken';
   }

   if ( empty( $_REQUEST['mode'] ) )
   {
       // ...
   }
   else
   {
       if ( empty( $Daten['check'] ) )
       {
            write_anschreiben_db( $db_Verbindung, $rkl_id, $Daten_tmp,
$_REQUEST['mode']) ;
       }

       if ( $_REQUEST['mode'] == 'Drucken' )
       {
           // $_POST['mode'] kommt mit 'Drucken' an
           $Template = file_get_contents(
               'templates/Anschreiben.Text.DE.htm.tpl.htm');
           $Template = html_entity_decode(
               str_replace(array_keys($Daten),
                           array_values($Daten),
                           $Template));
           header('Content-Type: application/msword');
           header('Content-Length: '.strlen($Template));
           header('Content-Disposition: inline;
filename='.str_replace('|', '',
$Daten['##REKLAMATION##']).'_Anschreiben.doc');
           header('Content-Transfer-Encoding: binary');
           echo $Template;
           exit();
       }
       elseif ( $_REQUEST['mode'] == 'Mail' )
       {
           mail_anschreiben($db_Verbindung, $rkl_id, $Daten_tmp);
           $Daten['##COMMAND##'] = 'setTimeout(\'window.close()\', 5000)';
       }
   }
}
else
{
    echo 'Nothing done!';
}
?>


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive