Download Script

puckido

Mitglied
Hi,
ich habe auf Basis eine Downloadsscripts hier im Forum mal ein bisschen gebastelt und eine Funktionalität für externe Dateien hinzugefügt.
Jetzt hätte ich mal ne Frage:

Wird nicht dadurch dass mein Server die Datei runterlädt und dann an den Nutzer weitergibt für mich 2x die Dateigröße an Traffic erzeugt

Und wie siehts aus: Kann der Endnutzer, wie auch immer, die Original Adresse des Downloads herausfinden

Fragen über Fragen, hier das Script:

PHP:
<?php

      $filename='http://home.arcor.de/cooler32/Passwort.JPG';
$filename2 = $filename;

      $kbs=0;


if (strstr($filename , "http://")) {


//Wenn filename eine URL ist, dann existenz der Datei prüfen
  $test = @fopen ($filename, "r");
  if (!$test) {
      echo "<p>Datei konnte nicht geöffnet werden. <br>";
      @fclose ($test);
      exit;
}

//richtigen Dateiname herausfinden

//string wird anhand von / geteilt, dann in array geschrieben, array gespiegelt und der erste wert gelesen ;)
$array= split("/",$filename2);
$array_verkehrt = array_reverse($array);
$realfilename = $array_verkehrt[0];

//Wenn existiert dann öffnen + Bereitstellen

          $dlfile = fopen( $filename , "r");

   header('Content-Type: application/octet-stream');

      header('Content-Disposition: attachment; filename="'.$realfilename.'"');

    while (!feof($dlfile))

            {

                $bytes=1024;

                if ($kbs>0)

                    {

                        $bytes*=$kbs;

                    }

                echo fread($dlfile,$bytes);

                flush();

                if ((!feof($dlfile)) && ($kbs>0))

                    {

                        sleep(1);

                    }

            }

      fclose($dlfile);
}

// Wenn filename keine URL ist, von lokaler Datei ausgehen

else

{

 //Prüfen ob Datei lokal vorhanden ist und dann öffnen

 if ((file_exists($filename)) && (is_readable($filename)))

         {

              $dlfile=fopen($filename,'r');

        }

   else

       {

         die('<p>Datei konnte nicht geöffnet werden. <br>');

        }

      header('Content-Type: application/octet-stream');

      header('Content-Disposition: attachment; filename="'.$filename.'"');

    //  header('Content-Length: '.filesize($filename));

      while (!feof($dlfile))

          {

              $bytes=1024;

              if ($kbs>0)

                  {

                      $bytes*=$kbs;

                  }

              echo fread($dlfile,$bytes);

              flush();

              if ((!feof($dlfile)) && ($kbs>0))

                  {

                      sleep(1);

                  }

          }

      fclose($dlfile);
}
?>

Auch andere Verbesserungsvorschläge werden dankend angenommen ;)

Grüße und THX im Voraus,
puck ;-)
 
Zuletzt bearbeitet:
zu 1: Und wenn die Datei lokal aufgerufen wird (auf dem lokalen Server liegt) wie siehts dann aus? Dann ist doch nur 1x die Dateigröße an Traffic zu erwarten, oder?

Grüße
 
Zurück