Seite 1 von 1
Korrupte Downloads
Verfasst: So 25.Nov, 2007 23:08
von Splash06
Hi,
ich hatte Probleme mit dem Download, die Daten wurden zwar runtergeladen allerdings war der Download korrupt.
Das ganze lag bei mir am Ausgabepuffer der bereits vor dem Download Leerstellen enthielt und die dann nacher an den Anfang der Datei gesetzt wurden. Dadurch ließen sich z.B. excel-Dokument nicht mehr lesen. =>siehe readfile()
Lösung des Problem ist einfach(wenn man es mal gefunden hat ^^):
Code: Alles auswählen
OPEN: downloads.php
FIND:
/*
* not it is time and we are ready to rumble: send the file to the user client to download it there!
*/
AFTER ADD:
// Ausgabepuffer leeren um korrupte Downloads zu vermeiden
ob_end_clean();
ob_start();
PS: Ein paar Daten zu meiner Plattform:
PhpBB: (noch) phpBB 2.0.21
PHP: 5.2.0-19
Suse Linux
########################
Wenn ich bei ExtraInformation etwas reinschreibe erscheint der CrackerTracker beim Abschicken des Posts ? Scheint in der posting.php noch eine Ausnahme zu fehlen.
Verfasst: Mo 26.Nov, 2007 10:02
von oxpus
Oh, danke für die Lösung!
Ich werde den MOD damit dann schnellstens aktualisieren.
Verfasst: Mo 26.Nov, 2007 11:43
von Dungeonwatcher
Hi!
Das funktioniert bei meinem System mal wieder nicht. Wenn ich dies so eintrage:
Code: Alles auswählen
/*
* not it is time and we are ready to rumble: send the file to the user client to download it there!
*/
# // Ausgabepuffer leeren um korrupte Downloads zu vermeiden
ob_end_clean();
ob_start();
if ($dl_file['extern'])
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$dl_file['file_name']);
}
dann wird entweder die Datei
downloads.php zum Speichern angeboten (Methode neu) und hat anschließend 0 Byte, oder aber es gibt die Meldung:
...konnte nicht gespeichert werden, weil die Quelldatei nicht gelesen werden konnte.

Verfasst: Mo 26.Nov, 2007 13:43
von oxpus
Langsam, ich werde das erst noch austesten!
Verfasst: Mo 26.Nov, 2007 17:43
von oxpus
Keine Chance, mit dieser Änderung funktioniert es scheinbar auch nur hier, nirgends anders!
Mit diesen Befehlen würde man den Ausgabepuffer leeren, so daß bereits gesendete Inhalt nicht mehr beim Browser ankommen.
Die Folge wären sehr viele Abbrüche bei Downloads!
@Splash06
Hast Du denn schon mal andere Download Methoden im MOD selber eingestellt und getestet?
Dazu würde ich auch Office-Dateien nie unkomprimiert zum Download anbieten, da diese immer Gefahr laufen, zerstört zu werden.
Besser ist es hier, diese zumindest als Zip-Archiv zu packen und dann hochzuladen.
Ergo:
Ich werde den MOD nicht anpassen, da mit diesen Befehlen mehr Schaden als Nutzen angerichtet werden kann.
Verfasst: Mo 26.Nov, 2007 21:20
von Splash06
Ich hatte alle Methoden getestet und dann festgestellt egal ob .zip .txt oder .doc es wird immer [] so ein rechteck an den Anfang der Datei gehängt. Alles Lösungsvorschläge in diesem Forum hatten nicht geholfen. Kann sein das es bei mir an einem der Mods liegt die ich eingebaut habe oder einfach nur an PHP5.
Es kann sein das die Lösung mit dem direkte Download dann nicht mehr funktioniert ... müsste man testen, was aber auch kein Problem wären weil man das ganze dann einfach später einfügt.Wollte es nur posten falls jemand mal vor dem gleichen Problem stehen sollte und keine Lösung findet.
MfG Splash
Verfasst: Mo 26.Nov, 2007 21:23
von oxpus
Wie "ein []" einfügt?
Wo denn? In die Datei?
Wie hast Du die denn dann hochgeladen?
Mit dem Download MOD selber?
Wäre so oder so sehr komisch, denn die Datei wird durch den MOD in keinster Weise verändert...
Wie gesagt: Den Ausgabepuffer an der von Dir angegebene Stelle zu leeren und neu zu starten ist alles andere als hilfreich, da ich bei meinen Tests damit jede Datei mit 0 Bytes heruntergeladen bekam...
Verfasst: Mo 26.Nov, 2007 22:02
von Splash06
Die Dateien wurden korrekt hochgeladen und per FTP konnte ich sie auch wieder korrekt runterladen.
Der Ausgabepuffer enthielt allerdings bereits vor dem Download ein "\n" oder ein Leerspace das wird im Editor als hochkantes Rechteck angezeigt.
Per readfile() wird die Datei in den Ausgabepuffer geschrieben, hinter das \n. Wenn der Ausgabepuffer dann an den Clienten gesendet wird erhält dieser ein korruptes File (\n + orig.Datei)
Ich weiß nicht warum das bei mir so ist, aber das leeren des Ausgabepuffers vor dem Download und die Downloadeinstellung neu oder alt funktionieren seit dem.
Hoffe das konnte ein bisschen Klarheit schaffen
MfG Splash
PS: ich hab mal meine Downloads.php angefügt...
Verfasst: Di 27.Nov, 2007 12:51
von oxpus
Da stellt sich mir die Frage, warum überhaupt ein \n bei Dir im Ausgabepuffer vorhanden ist?
Das darf nämlich hier normalerweise nicht der Fall sein!
Der MOD schreibt nämlich bis zum header(); nichts in den Ausgabepuffer, der ist also, sofern nichts anderweitig am Forum geschraubt wurde, an der Stelle leer.