phpbar.de logo

Mailinglisten-Archive

[php] Alle Jahre wieder... Datei zum Download anbieten

[php] Alle Jahre wieder... Datei zum Download anbieten

Andreas Stagl a.stagl at gmx.at
Sam Aug 9 20:41:50 CEST 2003


Hallo allesamt,

ich weiss... diese Thematik wurde hier schon x-mal diskutiert.... und genau 
das ist leider auch mein Problem. Es gibt hierzu einfach zuviele "gute 
Ratschläge" in der Liste (in meinem Archiv), Deshalb wollte ich mal fragen...

- wie man's denn nun "richtig" (RFC konform) macht,
- ob die Reichenfolge der zu sendenden Header wirklich keine Rolle spielt,
- ob \n, \r\n oder garkein Zeilenumbruch an die jeweiligen Header angehängt 
werden soll/muss,
- ...

Im Anschluss an diese Mail füg ich mal ein Beispiel an, wie ichs vor langem 
mal gemacht hab und wie's zumindest auf meinem MSIE funktioniert.

Bin für jeden Hinweis dankbar.

Liebe Grüße aus Wien,
Andy


<?php
$pfad = "c:/home/test/xls";
$file = "myXls.xls";
$mime = "application/msexcel";

$fp=fopen($pfad."/".$file,"rb");
$binaryValue = fread ($fp, filesize ($pfad."/".$file));
fclose($fp);

header ("Content-Type: ".$mime."\n");

// Following Content-Disposition has the advantage that the file which
// shall be opened will be opened in its right application, but the
// disadvantage that you will be asked twice what you want to do with
// the file (save or open)
//
header ("Content-Disposition: ".(!strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 
5.5")?"attachment; ":"")."filename=\"".$file."\"\n");

// Following Content-Disposition would have the advantage that you will
// ony be asked once what you want to do with the file (save or open),
// but the disadvantage that the file will be opened in msie if an
// adequate plugin exists like it is for ms word or pdf files
//
// header ("Content-Disposition: filename=\"".$file."\"\n");

header ("Content-Transfer-Encoding: binary\n");

header("Expires: ".date("D, d M Y H:i:s",275031900)." GMT");		// Date in 
the past
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");		// always modified
header("Cache-Control: no-store, no-cache, must-revalidate");		// HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);		// ???
header("Pragma: no-cache");						// HTTP/1.0
// header ("Cache-Control: post-check=0, pre-check=0\n");
header ("Content-Length: ".strlen($binaryValue)."\n");

echo $binaryValue;
?>


php::bar PHP Wiki   -   Listenarchive