gz-Dateien kein Download

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

  • #16
    Original geschrieben von jmc
    [...]

    Ob die Datei bei diesem Mimetype aber dann gedownloadet wird oder nicht kann PHP unmöglich erkennen, da dies vom Client abhängt ...
    Es liegt am Server, ob eine gz-Datei heruntergeladen wird oder nicht. Irgendwo wird es programmiert sein, wie die Datei vom Browser empfangen wird. Diese Programmzeile müsste PHP auslesen können, da sich das PHP-Skript auf genau dem Server befindet, auf dem festgelegt ist, wie mit gz-Dateien verfahren wird.

    Kommentar


    • #17
      Original geschrieben von weltvolk
      Es liegt am Server, ob eine gz-Datei heruntergeladen wird oder nicht.
      Richtig.
      Irgendwo wird es programmiert sein, wie die Datei vom Browser empfangen wird.
      Nicht irgendwo, sondern im Browser. Er reagiert auf die Response-Header mit einer vorprogrammierten (genauer voreingestellten) Aktion.
      Der Server (Apache) sendet für eine .gz-Datei nur die Response-Header, die ihm per Konfiguration angewiesen wurden.
      Diese Programmzeile müsste PHP auslesen können, da sich das PHP-Skript auf genau dem Server befindet, auf dem festgelegt ist, wie mit gz-Dateien verfahren wird.
      Du willst mit PHP die Apache-Konfigurationsdateien lesen? Meistens geht das gar nicht (Stichwort Permissions), aber selbst wenn es geht, ist es auf jeden Fall der falsche Weg. Richtig wäre, per .htaccess alle Download-URLs auf ein PHP-Script umzuleiten. Dieses sendet dann selbst die gewünschten Response-Header und schleust dann die Download-Datei hinterher (readfile()).
      Noch richtiger wäre, einfach die Apache-Konfiguration so einzustellen, dass der Apache die richtigen Header für .gz sendet.

      Kommentar


      • #18
        Übrigens heruntergeladen werden sowohl die Dateien, die direkt angezeigt werden als auch die Datei, welche du über den Download-Dialog downloadest. Das ist für den Server kein Unterschied.

        Kommentar


        • #19
          Original geschrieben von onemorenerd
          Richtig.
          Nicht irgendwo, sondern im Browser. Er reagiert auf die Response-Header mit einer vorprogrammierten (genauer voreingestellten) Aktion.
          Der Server (Apache) sendet für eine .gz-Datei nur die Response-Header, die ihm per Konfiguration angewiesen wurden.
          Du willst mit PHP die Apache-Konfigurationsdateien lesen? ...
          Richtig. Wie man mit PHP feststellen kann, welchen Mimetype der Server welchem Dateinamen zuordnet: http://de.php.net/manual/de/function.finfo-file.php (Dank an jmc). Allerdings kann ich nicht überall einfach PHP 5 voraussetzen.

          Kommentar


          • #20
            Allerdings kann ich nicht überall einfach PHP 5 voraussetzen.
            Doch!
            PHP4 ist schon vor Monaten offiziell gestorben. Oder willst du auch noch für PHP3 schreiben?
            Wir werden alle sterben

            Kommentar


            • #21
              Hahaha

              Kommentar


              • #22
                Hahaha
                Wo ist der Witz? combie hat vollkommen recht, PHP4 kannst du für Neuentwicklungen vergessen.

                Kommentar


                • #23
                  Original geschrieben von weltvolk
                  Richtig.
                  Falsch! Du willst nicht die Apache-Konfig lesen, du willst lediglich die Download-Datei analysieren. Analysieren ist dabei schon zu viel gesagt, eigentlich willst du nur ihre Endung wissen. Das genügt schon, um die richtigen Header zu senden. In den User Contributed Nodes zu header() findest du Beispiele dazu.

                  Um Dateiendungen zu erkennen und Header zu senden, braucht es auch kein PHP 5.

                  Kommentar


                  • #24
                    Darf man fragen was du überhaupt erreichen willst... ?
                    Denn das wird sehr wahrscheinlich einiges einfacher zu erklären sein als z.B. wie man die Apache Konfiguration http.conf mit PHP ausliest, was ausserdem völlig unsinnig wäre.
                    onemorenerd hat dir sehr wahrscheinlich die Lösung eh bereits geschrieben falls du wirklich ein Problem haben solltest:
                    Du willst mit PHP die Apache-Konfigurationsdateien lesen? Meistens geht das gar nicht (Stichwort Permissions), aber selbst wenn es geht, ist es auf jeden Fall der falsche Weg. Richtig wäre, per .htaccess alle Download-URLs auf ein PHP-Script umzuleiten. Dieses sendet dann selbst die gewünschten Response-Header und schleust dann die Download-Datei hinterher (readfile()).
                    Noch richtiger wäre, einfach die Apache-Konfiguration so einzustellen, dass der Apache die richtigen Header für .gz sendet.

                    Kommentar


                    • #25
                      Das Skript soll erkennen, ob gz-Dateien zum Speichern heruntergeladen oder aber im Browser geöffnet werden. Erkennen und keine Header ändern.

                      Kommentar


                      • #26
                        Original geschrieben von weltvolk
                        Das Skript soll erkennen, ob gz-Dateien zum Speichern heruntergeladen oder aber im Browser geöffnet werden. Erkennen und keine Header ändern.
                        Das sit nicht machbar, denn um etwas im Browser öffnen zu können, muß es ebenfalls heruntergeladen werden.

                        Kommentar


                        • #27
                          Es ist wie uspri sagt und ausserdem kannst du das wie gesagt nicht beeinflussen... Ich kann auch meinen eigenen "Browser" verwenden oder sonst irgendwas.
                          Mit was du erreichen willst meine ich, wofür du es brauchst, denn dass du sowas brauchst kann ich dir nicht glauben, da es für dich als webmaster gar keine Rolle spielt, allerhöchstens ist es für Webbrowser-Entwickler von Bedeutung, aber auch da...

                          Kommentar


                          • #28
                            Wie gesagt möchte ich da auch gar nichts beeinflussen ... Dorthin, wo festgelegt ist, ob gz-Dateien dem Content-Type "application/x-gzip" zugeordnet werden oder eben nicht, soll das Skript sozusagen seine Fühler ausstrecken und die Information bereitstellen. Was für ein Skript das ist oder ob du es mir glaubst oder nicht, ist da nun wirklich sekundär.
                            Zuletzt geändert von weltvolk; 07.01.2009, 11:59.

                            Kommentar


                            • #29
                              Nee,das ist nicht sekundär, denn ich bin momentan überzeugt davon, dass du nur "sozusagen" weisst wie es funktioniert und du deshalb gar nicht wissen kannst was du tun solltest um dein Ziel zu erreichen.
                              Dorthin, wo festgelegt ist, ob gz-Dateien dem Content-Type "application/x-gzip" zugeordnet werden oder eben nicht, soll das Skript sozusagen seine Fühler ausstrecken und die Information bereitstellen
                              Wem bereitstellen, wozu bereitstellen und ausserdem kann dies ja wohl am Anfang dieses Threads nicht dein Ziel gewesen sein, denn du kanntest den Content-Type noch gar nicht.

                              Ob gz-Dateien von Apache automatisch dem Type application/x-gzip zugeordnet werden kannst du in deiner Apache config nachschauen. Du kannst die Appache config auch über eine Anwendung auf dem Server (z.B. in C++ geschrieben) an PHP weiterleiten. Der direkte Zugriff durch PHP wird aber wegen der Vergabe von Rechten Probleme mit sich bringen.

                              Selbst wenn du dann den Mime-Type hast heisst es noch nicht, dass bei application/x-gzip, dann ein Downloaddialog angezeigt wird, denn man je nach Browser, wie bereits ein paar Mal erwähnt werden die Dateien verschieden behandelt.(z.B. beim FF kannst in ein paar Minuten eine Erweiterung einfügen, die gzip-Dateien gzippt und anzeigt)

                              Kommentar


                              • #30
                                'Mimetype' ist vielleicht die bessere Bezeichnung für das, was ich suche. Es hängt wirklich nicht vom Client ab, mit welchem Content-Type eine gz-Datei schließlich ankommt. Es liegt am jeweiligen Server. Hier kann sie gespeichert werden und dort wird sie angezeigt. Wir wissen es und PHP soll es erkennen, da nützt das Widersprechen nichts.

                                Kommentar

                                Lädt...
                                X