| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

23-06-2009, 21:24
|
|
Henning D
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 3
|
|
Dateidownload mittels header u. ReadFile
Hallo!
Ich quäle mich gerade mit der Entwicklung eines Downloadzählers ab - dabei bin ich auf folgendes Problem gestoßen:
Wenn eine Datei mit dem untenstehenden Code direkt über das HTTP-Protokoll gesendet wird, enthält sie danach eine Leerzeile am Anfang zu viel und ist somit nicht mehr darstellbar.
Hier mein Ansatz:
PHP-Code:
<?php
function DownloadFile($File, $MimeType, $DownloadDlg)
{
header("Content-Length: " . filesize($File));
header("Content-Type: $MimeType");
if ($DownloadDlg)
header("Content-Disposition: attachment; filename=\"".basename($File)."\"");
readfile($File);
}
DownloadFile("/downloads/images/s.ico", "image/png", false);
?>
Der Hoster ist Funpic (als kostenlose Variante) und hier ist der Link auf die PHP-Datei.
Die ursprüngliche Datei (s.ico) ist korrekt und enthält keine Fehler.
Nach Aufruf des obigen PHP-Skripts präsentiert Firefox dann folgendes:
Zitat:
|
Die Grafik "http://henningdtrchs.he.funpic.de/test.php" kann nicht angezeigt werden, weil sie Fehler enthält.
|
Warum?
Und vor allem: wie kann ich das beheben?
|

23-06-2009, 21:32
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Henning D
Wenn eine Datei mit dem untenstehenden Code direkt über das HTTP-Protokoll gesendet wird, enthält sie danach eine Leerzeile am Anfang zu viel und ist somit nicht mehr darstellbar.
|
Leerzeile in deinem Script, ausserhalb des <?php ...?>-Bereiches.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

23-06-2009, 21:39
|
|
Henning D
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 3
|
|
Zitat:
|
Leerzeile in deinem Script, ausserhalb des <?php ...?>-Bereiches.
|
Vielen Dank für die schnelle Antwort!
Aber leider ist das nicht die Lösung des Problems: das Script hat nur den PHP-Bereich und somit keine Leerzeilen außerhalb davon...
|

23-06-2009, 21:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Also bei der Ressource, die du verlinkt hast, steht auch im Content-Length-Header nichts drin - also wird vermutlich die Bilddatei, die du angegeben hast, gar nicht gefunden (und du merkst nichts davon, weil error_reporting bzw. display_errors abgeschaltet sind).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

23-06-2009, 22:09
|
|
Henning D
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 3
|
|
Hmm...
Schande über mein Haupt
Jetzt weiß ich, warum ich was gegen Script-Sprachen habe!
Zitat:
|
also wird vermutlich die Bilddatei, die du angegeben hast, gar nicht gefunden
|
Die Datei existierte so tatsächlich nicht (ich habs mit file_exists überprüft) - der Pfad war falsch ("downloads" und nicht"/downloads").
Blöd, dass der Fehler nicht angezeigt wird.
Das Problem im ursprünglichem Fall (beim Downloadzähler) war aber anderer Natur:
Zitat:
|
Leerzeile in deinem Script, ausserhalb des <?php ...?>-Bereiches.
|
Aber die Leerzeile war nicht mal in meinem Script, sondern in einer externen Include-Datei...
Da wäre ich aber im Leben nicht darauf gekommen - Danke nochmals!
|

23-06-2009, 22:17
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Henning D
Jetzt weiß ich, warum ich was gegen Script-Sprachen habe!
|
Die können nichts dafür, wenn der Nutzer mit ihnen nicht richtig umzugehen weiss.
Zitat:
|
Blöd, dass der Fehler nicht angezeigt wird.
|
Würde er wohl, wenn es wie gesagt entsprechend eingestellt wäre.
Wird es aber bei solchen Freehostern oftmals nicht, weil die nun mal ein ZIelgruppe haben, die oft nicht allzu viel Ahnung hat - und sich dann mit Warnmeldungen auf Grund schlampiger Programmierung überschüttet sieht, wenn das wirklich "scharf" eingestellt wäre.
Aber man kann es auch selber im Script einstellen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|