Movie zum Download anbieten

magman

Mitglied
Hallo zusammen,

folgende Situation:

Meine Homepage besteht aus einer in HTML gebetteten Flash (SWF) Datei.
In diesem Flash File habe ich nun einen Button, welcher wenn er betätigt wird einen Quicktime Movie zum Download anbieten soll.

Die Daten hab ich alle in einen Ordner auf dem Server gepackt und dem Button folgende Aktion verpasst:

on(release) {
getURL("test.mov");
}


Drücke ich nun auf den Button wird die Datei in Browser geladen und abgespielt.

Was ich jedoch erreichen will ist, daß der Nutzer die Datei nach einem >button release< die Datei herunterladen kann. (also sich das Dialogfenster > "wohin speichern" öffnet)

Da ich ein relativer Flash Neuling bin, freu ich mich über jeden Tipp von euch.

Ich verwende Flash MX 2004.

Vielen Dank schon mal im Vorraus,

Magman
 
Zuletzt bearbeitet:
Hi und willkommen im Forum,

Wenn Du mit Flash 8 arbeiten würdest, könntest Du die download-Methode des FileReference-Objektes verwenden. Mit MX2004 bist Du auf ein serverseitiges Script angewiesen, welches die Daten mit einem Content-Type ausliefert, der nicht im Browser geöffnet, sondern zum Download auf den Rechner angeboten wird.

Das könnte flashseitig so aussehen:
Code:
on (release) {
    getURL("download.php?file=test.mov");
}
Die "download.php" liest die angegebene Datei aus, setzt einen enstprechenden Header, und gibt die Daten aus. Wie Du solche Downloadscripte erstellst (und vor allem: wie Du sie sicher erstellst), kannst Du im PHP-Forum finden.

Gruß
.
 
Hi Tobias,

Vielen Dank für die megaschnelle Antwort.
Danke auch für den Hinweis zur Lösung des Problems. Ich habs folgendermaßen hinbekommen:

Der Button hat die Aktion:

Code:
on (release) {
getURL("download.php?file=1");
}


das download.php file sieht folgendermaßen aus:
PHP:
      $Datei = array();
      $Datei[1] = "test1.mov";
      $Datei[2] = "test2.mov";
      $Datei[3] = "test3.mov";
      
      $ERR = "ERROR: Die gesuchte Datei befindet sich nicht (mehr) im Download-Verzeichnis!";

      extract($_GET);
      $Verzeichnis = "./downloads/";
      $Down_Name = $Datei[$file];
      $Down_File = $Verzeichnis.$Datei[$file];

      if(!file_exists($Verzeichnis.$Down_Name)||!$Down_Name)
        {
        echo "
        <script type='text/javascript' language='JavaScript'>
        <!--
         alert('$ERR');
        //-->
        </script>
        ";
        exit;
        }
      $size = filesize($Down_File);
      clearstatcache();
      $Countverz = $Verzeichnis."counter";
      $GS = 0;
      if(!is_dir($Countverz)) mkdir("$Countverz",0777);

      $DownStat = "$Countverz/DownStat.txt";
      if(!file_exists($DownStat))
        {
        $fp = fopen($DownStat,"a");
        fputs($fp,"Gesamt:0\n");
        fclose($fp);
        }
      $DownStatfile = file($DownStat);
      $found = 0;
      for($i=0;$i<count($DownStatfile);$i++)
        {
        list($D,$C) = split(":",chop($DownStatfile[$i]));

        if($D == "Gesamt") continue;
        if($D == $Datei[$file])
          {
          $C++;
          $found = 1;
          }
        $SP = "$D:$C\n";
        $GS = $GS + $C;
        }
      if(!$found) $SP .= $Datei[$file].":1\n";
      $SP .= "Gesamt:$GS\n";
      $fp = fopen($DownStat,"w");
      flock($fp,2);
      fputs($fp,$SP);
      flock($fp,3);
      fclose($fp);


      header("Content-type: application/octet-stream");
      header("Content-disposition: attachment; filename=".$Down_Name);
      header("Content-Length: $size");
      header("Pragma: no-cache");
      header("Expires: 0");
      readfile($Down_File);

      close();

that's it!

beste Grüße,

magman
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück