Downloadschutz durch files außerhalb der htdocs

hi!

ein aktuelles projekt erfordert einen haufen downloads. diese sollen aber nicht öffentlich verfügbar sein - nicht jeder, der die url weiß, soll die files downloaden können … also einfach die files in ein nicht öffentliches verzeichnis des webservers, und bei einer anfrage den inhalt von dort in die ausgabe reinkopieren.

kein problem also … nur: die files sind manchmal locker an die 50mb groß - schafft das ein durchschnittlicher webserver wohl, ohne in die knie zu gehen, und der komplette restliche ablauf im sumpf versinkt?

mfg,

  • stefan

Hallo Stefan,

Du kannst in einem php Skript die Datei direkt als binardatei durchleiten. Dazu brauchtst Du nur den entpsprechenden Header zu verwenden:

============== php snippet: =============
$filename = „c:/temp/“ . basename($file);
$len = filesize($file);
header(„content-type: application/stream“);
header(„content-length: $len“);
header(„content-disposition: attachment; filename=$filename“);
$fp=fopen($file, „r“);
fpassthru($fp);

-) Marian

ja, danke!

schafft das der webserver bei bis zu 50mb-files auch ohne probleme?

  • stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ja, danke!

schafft das der webserver bei bis zu 50mb-files auch ohne
probleme?

nur wenn der Download schnell genug erfolgt, also innerhalb von 30 Sekunden :smile:

Andernfalls wird das PHP Timeout zuschlagen. Du kannst es eventuell mit set_time_limit() höher setzen, das muss aber beim Provider freigeschaltet sein.

-) Marian

hi marian!

danke für das skript, es hat mir sehr geholfen - funktioniert aber erst nach einigen kleinen änderungen:

$filename = „c:/temp/“ . basename($file);

// $len = filesize($file);
$len = filesize($filename);

header(„content-type: application/stream“);
header(„content-length: $len“);
header(„content-disposition: attachment; filename=$filename“);

// $fp=fopen($file, „r“);
$fp=fopen($filename, „r“);

fpassthru($fp);


an beiden stellen gehört statt $file $filename, da sonst ja der pfad weggelassen wird, und das file im selben verzeichnis liegen müsste …

danke nochmal, bineria zum gruße!

  • stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]