2009-07-02 10 views
2

Ich versuche, herunterladbare Video-Dateien zu erstellen. In meiner Website gibt es eine Liste von Dateien. Alle Videos sind im FLV-Format (Flash). Für alle Videos gibt es einen genauen Link zur Datei. Aber in allen Browsern nach dem Klicken auf Inhalt wird in das Browserfenster geladen. Ich brauche das nicht. Wie ich verstehe, sollte ich Redirect-Seite erstellen, die Mime-Typ der Download-Datei enthält. Was genau soll ich machen? Sprache: phpMime-Typ der Datei herunterladen

Antwort

7

erstellen PHP-Seite mit dem folgenden:

<?php 

$filepath = "path/to/file.ext"; 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$filepath"); 
header("Content-Type: mime/type"); 
header("Content-Transfer-Encoding: binary"); 
// UPDATE: Add the below line to show file size during download. 
header('Content-Length: ' . filesize($filepath)); 

readfile($filepath); 

?> 

Set $filepath auf den Pfad der Datei heruntergeladen werden, und legen Sie Content-Type auf den MIME-Typ der Datei heruntergeladen werden.

Zeigen Sie den "Download" -Link auf diese Seite.

Für mehrere Dateien des gleichen Typs:

<?php 

$filepath = $_GET['filepath']; 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$filepath"); 
header("Content-Type: mime/type"); 
header("Content-Transfer-Encoding: binary"); 
// UPDATE: Add the below line to show file size during download. 
header('Content-Length: ' . filesize($filepath)); 

readfile($filepath); 

?> 

die Informationen austauschen, wie oben angegeben, und zeigen Sie den Link „Download“ auf dieser Seite mit einem GET-Parameter mit dem Namen „Dateipfad“ mit dem Dateipfad.

Zum Beispiel, wenn Sie diese php-Datei "download.php" nennen, zeigen Sie den Download-Link für eine Datei namens "movie.mov" (im selben Verzeichnis wie download.php) zu "download.php? Filepath = movie.mov ".

+0

Wie ich download.php weiß? Filepath = movie.mov ist nicht gut =) Denn Everyboady konnte jede Datei vom Server herunterladen. Danke trotzdem. – Ockonal

+0

Alternativ können Sie eine PHP-Datei für jede Filmdownload-Datei erstellen. Aber das könnte langweilig werden. –

+0

Sorry, aber Ihre Methode funktioniert nicht = (. Nach dem Skript habe ich ein Fenster vom Browser zum Download. Es ist das, was ich brauche, aber es downloadet Datei, die 0 Bytes = ( – Ockonal

9

Die empfohlene MIME-Typ für das heißt application/octet-stream:

Der „octet-stream“ Subtyp verwendet wird, um anzuzeigen, dass ein Körper beliebige binäre Daten enthält. [...]

Die empfohlene Aktion für eine Implementierung, die eine "application/octet-stream" -Entität erhält, besteht darin, einfach die Daten in eine Datei zu stellen, mit beliebigem Content-Transfer-Encoding rückgängig zu machen oder vielleicht zu verwenden als Eingabe für einen benutzerdefinierten Prozess.