2016-03-30 3 views
-1

Ich mag mit fopen eine SQL-Datei zum Download, mein Problem ist, dass der Code unten ganze SQL-Datei zusätzlich zu der HTML-Datei wie so heruntergeladene:Ärger Datei mit fopen in PHP in dem Herunterladen

<!DOCTYPE html> 
... 

<span style=\"font-family:tahoma,arial,helvetica,sans-serif\">sth</span></p> 
\n","media/images/","media/images/","0","en","1","0","2000-11-30","admin","sth","0","2000-12-13 00:00:00","0","","","","","12","","","","0","","73","1","1","1","1","1","1","1","1","1","1","1","1","1","0","0","0","","","","","0",""); 
INSERT INTO sctp_contents VALUES("458","","books ","","<html> 

Und der Code:

header("Content-type: " . 'application/octet-stream'); 
header("Content-Disposition: attachment; filename=/backup/".$db_bkup); 
header("Content-Transfer-Encoding: binary"); 
header("Content-length: $file_size"); 

while(!feof($handle)) { 
    echo fread($handle, $file_size); 
    flush(); 
} 
fclose($handle); 
die; 

Helfen Sie mir, Dank

+0

ist das das vollständige Skript zum Senden der Datei? Außerdem - ich glaube, dass es "Content-Type" im Gegensatz zu "Content-type" sein sollte – RamRaider

+0

Nein Liebe, es gibt einige Code davor, aber sie sind korrekt. Nein, es gibt keine Unterschiede. –

+0

Der Vollständigkeit halber könnten Sie den Code, der davor kommt, posten? – RamRaider

Antwort

0

Afer zusammen, um den Rest des Codes in ein lesbares Format piecing ich nicht etwas Bestimmtes sehen können, die nicht in Ordnung aussieht - das einzige, was wh ich, für mich, sieht seltsam aus jDateTime ~ dies könnte eine Funktion in einer späteren Version von PHP oder eine benutzerdefinierte Funktion, die ich weiß nicht, aber es sieht seltsam aus.

Anders als das vielleicht ob_clean verwenden, um sicherzustellen, dass es keine Zeichen ausgegeben, bevor Sie den Download starten und die richtigen Header verwenden.

ob_clean(); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=/backup/{$db_bkup}"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: {$file_size}"); 

while(!feof($handle)) { 
    echo fread($handle, $file_size); 
    flush(); 
} 
fclose($handle); 
die; 
+0

Es hat teilweise funktioniert, jetzt gibt es keine HTML davor, aber Mitte und nach ... Danke –

+0

stellen Sie sicher, dass Sie die PHP-Fehlerprotokolle überprüfen – RamRaider

+0

Nein Lieber RamRaider, es gibt keinen Fehler, ich denke, es bekommt sie von einigen Modulen oder einige andere Dateien, die enthalten sind. Es ist ein mvc strukturiertes CMS, und ich weiß nicht, wo die möglichen Includes sind. Nochmals vielen Dank. –