Grüße miteinander,
ich habe einen kleinen Download Script geschrieben nach Vorlagen von php.net und anderen.
Der Download funktioniert auch einwandfrei nur ist die Datei die heruntergeladen wird durch hässlichen HTML Code verschandelt .
Diesen hätte ich gerne eliminiert.
Ein zwei Punkte zur Umgebung:
1. Der Script ist in eine Klasse eingebettet die Log Dateien erstellt. Aufgerufen wird der Script über eine Methode der Klasse.
2. Die elementar wichtigen Informationen für den download werden während der Initialisierung eines Objekts von der oben erwähnten Klasse gesetzt (Filename usw.)
3. Die Log Datei ist und soll eine .txt Datei sein.
Der Code des Scripts sieht aus wie folgt:
Am Ende der Funktion sieht man meine verzweifelten Versuche die HTML Zeilen herauszufiltern (Versuch String zu formatieren und diesen dann auf die Ausgabe zu schreiben). Jedoch nutzt das gar nichts. Ich vermute das Problem liegt irgendwo beim vorbereiten der Ausgabe also hat was mit den Content Types zu tun.
Die verschandelte Log Datei sieht in etwa so aus:
Zuerst einmal HTML Code und CSS Einstellungen danach sofort angehängt der eigentliche Inhalt der Log Datei.
Beispiel:
Die HTML Einträge am Anfang hätte ich nun gerne weg.
Es sei anzumerken, dass ich einem bestehenden Tool Funktionen hinzufügen soll und das ohne große Veränderung. Das heisst ich kann relativ wenig an dem bestehenden Code herumpfuschen.
Bisher habe ich niemanden gefunden, der ein ähnliches Problem hat, aber womöglich habe ich auch nur die falschen Suchbegriffe verwendet.
Nun denn.
Vielen Dank und mfg
Encry
ich habe einen kleinen Download Script geschrieben nach Vorlagen von php.net und anderen.
Der Download funktioniert auch einwandfrei nur ist die Datei die heruntergeladen wird durch hässlichen HTML Code verschandelt .
Diesen hätte ich gerne eliminiert.
Ein zwei Punkte zur Umgebung:
1. Der Script ist in eine Klasse eingebettet die Log Dateien erstellt. Aufgerufen wird der Script über eine Methode der Klasse.
2. Die elementar wichtigen Informationen für den download werden während der Initialisierung eines Objekts von der oben erwähnten Klasse gesetzt (Filename usw.)
3. Die Log Datei ist und soll eine .txt Datei sein.
Der Code des Scripts sieht aus wie folgt:
PHP-Code:
function dlLogFile2()
{
//First, see if the file exists
if (!is_file($this->_filename)) { die("<b>404 File not found!</b>"); }
//Gather relevent info about file
$len = filesize($this->_filename);
$filename = basename($this->_filename);
$file_extension = strtolower(substr(strrchr($this->_filename,"."),1));
//This will set the Content-Type to the
//appropriate setting for the file
switch( $file_extension ) {
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "mpg":$ctype="video/mpeg"; break;
case "avi": $ctype="video/x-msvideo"; break;
default: $ctype="application/force-download";
}
//Begin writing headers
header("Cache-Control:");
header("Cache-Control: public");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
# workaround for IE filename bug with multiple periods /
#multiple dots in filename
# that adds square brackets to filename - eg.
#setup.abc.exe becomes setup[1].abc.exe
$iefilename = preg_replace('/\./', '%2e', $filename,
substr_count($filename, '.') - 1);
header("Content-Disposition: attachment;
filename=\"$iefilename\"");
} else {
header("Content-Disposition: attachment;
filename=\"$filename\"");
}
header("Accept-Ranges: bytes");
$size=filesize($this->_filename);
//open the file
$fp=fopen("$this->_filename","rb");
//start buffered download
while(!feof($fp)){
//reset time limit for big files
set_time_limit(0);
$string = fread($fp,1024*8);
$clear = stristr($string,"[Log]:");
print($clear);
flush();
ob_flush();
}
fclose($fp);
exit;
}
Die verschandelte Log Datei sieht in etwa so aus:
Zuerst einmal HTML Code und CSS Einstellungen danach sofort angehängt der eigentliche Inhalt der Log Datei.
Beispiel:
<html>
<head>
<title>XYZ file</title>
<style type="text/css"> <!--
BODY {
scrollbar-face-color:#FFFFFF;
scrollbar-highlight-color:#ADBEE7;
.
.
.
[Log]: [08-06-06|13:53:44]Connection XYZ usw!
restliche Log Einträge.
<head>
<title>XYZ file</title>
<style type="text/css"> <!--
BODY {
scrollbar-face-color:#FFFFFF;
scrollbar-highlight-color:#ADBEE7;
.
.
.
[Log]: [08-06-06|13:53:44]Connection XYZ usw!
restliche Log Einträge.
Es sei anzumerken, dass ich einem bestehenden Tool Funktionen hinzufügen soll und das ohne große Veränderung. Das heisst ich kann relativ wenig an dem bestehenden Code herumpfuschen.
Bisher habe ich niemanden gefunden, der ein ähnliches Problem hat, aber womöglich habe ich auch nur die falschen Suchbegriffe verwendet.
Nun denn.
Vielen Dank und mfg
Encry
Kommentar