Dateidownload mittels header u. ReadFile

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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:
    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?

  • #2
    Zitat von Henning D Beitrag anzeigen
    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.

    Kommentar


    • #3
      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...

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          Hmm...
          Schande über mein Haupt

          Jetzt weiß ich, warum ich was gegen Script-Sprachen habe!

          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[COLOR=#000000][COLOR=#CC0000] [/COLOR][/COLOR]"/downloads").
          Blöd, dass der Fehler nicht angezeigt wird.

          Das Problem im ursprünglichem Fall (beim Downloadzähler) war aber anderer Natur:
          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!

          Kommentar


          • #6
            Zitat von Henning D Beitrag anzeigen
            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.

            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.

            Kommentar

            Lädt...
            X