phpbar.de logo

Mailinglisten-Archive

[php] File-Downloads

[php] File-Downloads

Raymund Fischer raymund.fischer at daily-pin.de
Sam Nov 27 13:34:04 CET 2004


Hallo manu,

Ich hab leider die original-email nicht mehr, aber beim mac ie ist das ein
problem des ie. Hatte mich auch mal nen tag gekostet... :-)

Bei speichern unter zeigt er grundsaetzlich z.b. Speichern unter
"download.php" an. Danach startet ja aber automatisch der downloadmanager
und dem teilt man den richtigen namen wie folgt mit, sowie zwingt ihn immer
die datei downzuloaden statt im browser-plugin (bei pdfs, mpg usw)
anzuzeigen:

(alternativ kann man auch einfach die alt-taste beim klick auf den dl-link
druecken und das ganze wandert automatisch unter dem im header angegebenen
namen in den download-manager)

<--- snip --->

$bild_org_name = "bild.jpg";
$bild_size = filesize($bildpath);

header ("Expires: 0");
header ("Cache-Control: private, must-revalidate, post-check=0,
pre-check=0");
header ("Content-type: application/force-download;
filename=\"$bild_org_name\"");
header ("Content-type: application/octet-stream;
filename=\"$bild_org_name\"");
header ("Content-type: application/download; filename=\"$bild_org_name\"");
header ("Content-Description: \"$bild_org_name\"");
header ("Content-Disposition: attachment; filename=\"$bild_org_name\";");
header ("Content-Transfer-Encoding: binary");
header ("Content-length: $bild_size");

$file = fopen ($bildpath, "rb");
fpassthru ($file);
fclose ($file);


Getestet auf fast allen browsern unter win, mac und unix.


<--- snip --->

Bei ssl/https musst noch folgendes reinstellen:
Wenn kein ssl, kannst du problemlos cachen, aber mit ssl zickt der ie auf
der dose rum...

session_cache_limiter("private_no_expire, must-revalidate");
session_cache_expire(0);
session_start();


<--- snip --->

Und wenn ssl beim apache wie folgt, da sonst gar nix mehr geht mit downloads
auf dem mac-ie geht:

SSLEngine ON
SSLProtocol all -SSLv3
#wegen ie 5 kompatibilitaet auf mac os 9
SSLCipherSuite 
!EXP1024-RC4-SHA:!EXP1024-DES-CBC-SHA:ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:
+LOW:+SSLv2:+EXP:+eNULL
SSLVerifyClient none

SSLCertificateFile cert.crt
SSLCertificateKeyFile cert.key

<--- snip --->



Das sollte helfen...

Versuch erst gar nicht was wegzulassen... Damits auf jedem browser laeufft
muss alles rein... Lol...


Gruesse, ray


>>> ich hab bis jetzt immer damit abdecken können das ich als Downloadpfad
>>> am ende download.php?fileid=123&filename=dateiname.ext
> 
>> Ich versteh nicht ganz, was das bringt? OK, ich muss den Dateinamen nicht
>> aus der DB holen, aber sonst?
> 





php::bar PHP Wiki   -   Listenarchive