MP4 Downloader

Ich habe folgenden Code

<?php
$Datei = "videos/".$_GET['datei'];
$Dateiname = basename($Datei);
$Gros = filesize($Datei);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename='$Dateiname'");
header("Content-Length: $Gros");
readfile($Datei);
?>
http://meinewebseite.de/download.php?datei=Videodatei.mp4

Erstes Problem:
Die gedownloadeten Videos Können erst abgespielt werden, wenn man
vorne und am Ende ein ’ löscht. Das sieht in etwa so aus: ‚Videodatei.mp4‘.

Zweites Problem:
Beim download wird die Größe nicht angezeigt. Da steht also nur:
2,5 MB von ? zum Beispiel.

Kann mir jemand diese beiden Probleme ohne großen Aufwand entfernen und
auch gut erklären, was ich tun muss, falls es komplizierter wird? :smiley: Danke.

Hier liegt der erste Fehler:

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

Du darfst in einem Header keine ’ verwenden (glaube ich mal irgendwo gelesen zu haben. Also einfach nur „filename=$Dateiname“ fertig.

Bei deinem zweiten Problem… vielleicht liegts ja am ersten XD

Vielen dank. Hat funktioniert. Aber das zweite Problem ist immernoch da.

Das liegt sicher an dieser Zeile:

$Gros = filesize($Datei); Schreib da mal anstelle von $Datei $Dateiname…

Nicht das da irgendwie ein Konflikt ist :wink:

EDIT

nee… sorry :smiley:

Schau vorher mal bitte mittesl

if(file_exists($Datei))

nach obs die datei an dieser Stelle wirklich gibt :wink:
Nicht das du einen fehlerhaften Dateipfad hast

Jetzt geht garnichts mehr. Habs wieder normal gemacht! :stuck_out_tongue:

Versteh ich jetzt nicht… xD Aber die Datei existiert. Sie wird ja auch
problemlos runtergeladen. Das Problem ist ja, dass die Größe nicht
angegeben wird, mehr nicht. Ansonsten: kannst du das einfach in den
Code oben einbauen? Dann lad ich das hoch und teste :smiley:

Kann mir denn niemand mit meinem zweiten Problem weiterhelfen?

lass einfahc mal ein echo der Var $Gros ausgeben und schau ob da steht „undefined“ oder sonstwas oder ob du wirklich eine größe bekommst.

Wenn du keine Größe bekommst, scheint was mit dem Pfad zu der Datei nicht zu stimmen.

Da steht dann ein Fragezeichen…?

Der Pfad stimmt, schliesslich lädt es ja auch runter.

Also folgender Code funktioniert bei mir super und wenn ich die Testausgabe aktiviere, zeigt er mir die Größe der Datei an…

[CODE]<?php

$path = „videos/“;
$Datei = $path.$_GET[‚datei‘];

if(isset($_GET[‚datei‘]) && is_file($Datei))
{
//warum das hier nochmal?? hast doch $_GET[‚datei‘]
$Dateiname = basename($Datei);

$Gros = filesize($Datei);
//Testausgabe
//echo $Gros;

header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$Dateiname");
header("Content-Length: $Gros");
readfile($Datei);

}else
die(„Keine Datei mit diesem Namen gefunden!“);
?>[/CODE]

Eventuell musst du bei $path mal noch schreiben „./videos/“;

Ich habe jetzt die Datei angehängt.
Kannst du das bitte mal so ändern, dass es hoffentlich funktioniert?
Das mit („Keine Datei mit diesem Namen gefunden!“); versteh’
ich garnicht, weil man die Datei ja direkt auswählt. Braucht man also
nicht…

Nun…? Was ist?

soll ich jetzt deinen code schreiben oder wie?

Ich schaus mir morgen mal an. hab auch anderes zu tun!
Entweder du versuchst selber mal etwas (kannst ja nich viel falsch machen) oder du musst noch warten.

Um die Dateigröße zu übertragen musst du noch den Content-Length header setzen.