[GastForen Programmierung/Entwicklung PHP und MySQL PHP für automatischen Download einer EXE - Datei

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

PHP für automatischen Download einer EXE - Datei

westsamoa
Beiträge gesamt: 29

17. Jun 2011, 20:28
Beitrag # 1 von 3
Bewertung:
(4550 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

ich hab ein für mich unlösbares Problem. Ich möchte einem User anbieten eine Exe-Datei von meinem Webserver zu downloaden indem er nur die Seite http://xxx/download.php anklickt.

In dem Download verzeichnis liegt nur die download.php und die besagte EXE (der Name der Exe ändert sicht öfters, daher ohne starrem Namen).

Hier mein PHP Code. Er lädt die Datei nicht herunter, sondern öffnet diese im Browser so, dass der ganze Bildschirm voll mir Hieroglyphen ist. Was ist falsch an dem Code? Danke.

<?php
// Öffnet das Verzeichnis wo dieses Script liegt.
$verzeichnis = opendir('.');
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..") {
// Dateityp filtern. Es werden nur .exe-Dateien angezeigt
if (strstr($file, ".exe")) {
// Dateiendung vom Dateinamen filtern
$name = $file;
// Link erstellen
echo 'Falls kein automatischer Download startet, hier klicken: ';
echo "<a href=\"./$file\">$file</a><br>\n";

}
}
}

if (file_exists($name)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($name));
ob_clean();
flush();
readfile($name);
exit;
}
closeDir($verzeichnis); // Verzeichnis schließen

?>
X

PHP für automatischen Download einer EXE - Datei

Pozor
Beiträge gesamt: 892

18. Jun 2011, 15:50
Beitrag # 2 von 3
Beitrag ID: #473958
Bewertung:
(4509 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Dein Problem ist, dass Du vor dem Header schon Text ausgibst.
Dies bewirkt, dass die Header Infos nicht mehr gesendet werden können.

Die Lösung, Download in 2 Schritten:
1. Ausgabe des Contents und Metaweiterleitung
2. Reiner Download

Code
<?php 
// Öffnet das Verzeichnis wo dieses Script liegt.
$verzeichnis = opendir('.');
// Verzeichnis lesen
while ($file = readDir($verzeichnis))
{
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..")
{
// Dateityp filtern. Es werden nur .exe-Dateien angezeigt
if (strstr($file, ".exe"))
{
// Dateiendung vom Dateinamen filtern
$name = $file;
// Link erstellen
if(!intval($_GET['download']))
{ //Gib den Link nur aus, wenn kein Filedownload angefordert ist
echo '<html>';
echo '<head>';
echo '<meta http-equiv="refresh" content="2; url=download.php?download=1">'; //nach 2 Sekunden wird der Download ausgeführt.
echo '</head>';
echo '<body>';
echo 'Falls kein automatischer Download startet, hier klicken: ';
echo "<a href=\"./$file\">$file</a><br>\n";
echo '</body>';
echo '</html>';
}
}
}
}
closeDir($verzeichnis); // Verzeichnis schließen

if(file_exists($name) AND intval($_GET['download']))
{
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($name));
readfile($name);
exit();
}



als Antwort auf: [#473917]

PHP für automatischen Download einer EXE - Datei

westsamoa
Beiträge gesamt: 29

18. Jun 2011, 19:40
Beitrag # 3 von 3
Beitrag ID: #473974
Bewertung:
(4483 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

funktioniert super.

Vielen Dank und ein schönes WE.

Gruß, westsamoa


als Antwort auf: [#473958]

Aktuell

PDF / Print
enfocus_300

Neuste Foreneinträge


DokumentAufsplitten: neue Versionen des JavaScripts

Cookie-Overload??

Adobe InDesign CC - Windows (x64) GPU-Unterst�tzung �ber NVIDIA Control Panel

Kein Grep auf Satzzeichen am Ende einer URL

Text und QR Code in PDF einf�gen per PitStop Aktion statt InDesign

Bildschirmflackern beim Markieren von Texten

N�chstes Treffen der IDUG Stuttgart

Automatische Sicherung

PDF �ffnen via Script UI?

Affinity Publisher � schwarz wird in CMYK separiert