Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei-Informationen über HTTP

Einklappen

Neue Werbung 2019

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

  • Datei-Informationen über HTTP

    Hi,

    hab ein Projek, dass auf mehrere Server verteilt ist.
    Die Bilder, downloadLinks, CSS und JS liegen Zentral auf einem Server.
    (Is der Stand, kann ich nich ändern.)

    Bei den downloadLinks wird immer der Absolute Pfad händisch in ein Interface eingegeben.
    Um zu schauen ob der jenige meim Speichern auch alles richtig macht, sollte man jetzt das File überprüfen.
    Leider funktionieren file_exist() und filesize() nicht über http.

    Hat jemand ne Idee, wie ich die Größe der Datei rausbekomme?

    Besten Dank!

    Gruß
    Der Desian
    Wenn dich was ankotzt, machs besser.


  • #2
    Du musst die Datei eben einlesen.

    Kommentar


    • #3
      Ich denke, bei zB >2MB .PDFs ist das keine so gute Idee, wenn das Script erstmal per HTTP von nem andern Server die Datei läd um festzustellen welche Größe sie hat.
      Da verdonner ich die Armen Mods lieber zum 'Nachschauen und manuell reinschreiben'.

      Ne elegantere Lösung wär mir allerdings lieber.

      Gruß
      Der Desian
      Wenn dich was ankotzt, machs besser.

      Kommentar


      • #4
        Eigentlich sollen bei einer HEAD-Anfrage alle Header wie bei einem GET geliefert werden; also auch Content-Length. Bei dynamischen Inhalten kann man das in aller Regel knicken, aber bei statischen INhalten hat man wenigestens Chancen.

        Probier mal http://froemter.de/php/phpLinkCheck.phps mit einer kleinen
        Änderung aus.
        PHP-Code:
        while(!feof($fp)) $head .= fgets($fp1024);
        fclose($fp); 
        die(
        '<pre>'.$head.'</pre>); 
        Steht da dann was von Content-Length?

        Kommentar


        • #5
          Ansonsten halt den Socket selbst öffnen und den Request so schicken dann bekommt man alle Header ... muss man halt nur noch rausfiltern
          Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

          Kommentar


          • #6
            Zitat von DerDesian
            Ich denke, bei zB >2MB .PDFs ist das keine so gute Idee, wenn das Script erstmal per HTTP von nem andern Server die Datei läd um festzustellen welche Größe sie hat.

            Kommentar


            • #7
              Was soll mir diese Antwort jetzt sagen...?
              ich rede von einen Socket auf Port 80 der ein HTTP Request an den Server schickt dieser schickt den HTTP Header zurück und im Anschluss die Datei aber man kann ja mit den entsprechenden Funktionen einfach nur Bytestücke auslesen und dementsprechend nur den HTTP-Header herausfiltern und dann die Verbindung wieder trennen ohne die komplette Datei zu laden...

              ps:
              Zitat von Bruchpilot
              Probier mal http://froemter.de/php/phpLinkCheck.phps mit einer kleinen
              Änderung aus.
              PHP-Code:
              while(!feof($fp)) $head .= fgets($fp1024);
              fclose($fp); 
              die(
              '<pre>'.$head.'</pre>); 
              Steht da dann was von Content-Length?
              mal ganz nebenbei bemerkt der HTTP Header bei ner Antwort auf n Request muss nicht immer 1024 sein ... guck dir einfach nur mal mit Ethereal die Kommunikation zwischen Client u. Server an.
              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

              Kommentar


              • #8
                Zitat von HStev
                Was soll mir diese Antwort jetzt sagen...?
                Das habe ich mich bei Deiner vorletzten Antwort auch schon gefragt. Und jetzt auch wieder. Ich lese da leider nur viel bla bla.

                Zitat von HStev
                Ansonsten halt den Socket selbst öffnen und den Request so schicken dann bekommt man alle Header
                Ja, eben das macht das Skript doch. Es ist das bei php Faq unter "12. Wie überprüfe ich Hyperlinks auf ihre Gültigkeit? " verlinkte und es wertet die Antworten der HEAD Anfrage aus.
                mal ganz nebenbei bemerkt der HTTP Header bei ner Antwort auf n Request muss nicht immer 1024 sein
                Und genau deshalb ist da eine while-Schleife, die den Spaß bis feof() wiederholt. Sehr schlau bemerkt.
                dementsprechend nur den HTTP-Header herausfiltern und dann die Verbindung wieder trennen ohne die komplette Datei zu laden
                Wenn das geht, wird mit einiger Sicherheit auch bei einer HEAD-Anfrage die Länge geliefert. Werden die Daten per Transfer-Encoding:Chunked ausgeliefert (oft bei dynamischen Inhalten), fehlt diese Info; sie ergibt sich anderweitig.

                Kommentar


                • #9
                  Zitat von Bruchpilot
                  Zitat von HStev
                  Was soll mir diese Antwort jetzt sagen...?
                  Das habe ich mich bei Deiner vorletzten Antwort auch schon gefragt. Und jetzt auch wieder. Ich lese da leider nur viel bla bla.
                  Das lese ich bei deinen auch hin und wieder und tortzdem erklärt das nicht eine Antwort auf meinen Post... nirgends steht das ich das ich die Datei komplett überhaupt lade...ich hab von Anfang an von einen Socket gesprochen falls dir das ein Begriff sein sollte.

                  Aber man versucht ja immer wieder freundlich zu diskutieren und zu helfen...
                  Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                  Kommentar


                  • #10
                    Ja, und was verwendet das andere Skript? Kein Socket sondern Magie? Oder ist "Socket" Magie?
                    Ich habe wirklich ein Problem damit, wenn jemand in einer Diskussion bereits Gesagtes nochmal in schwammiger einwirft. Was bringt das?
                    Es verschwendet die zeit der anderen - in diesem Fall meine. Sorry, aber das nervt mich.

                    Kommentar

                    Lädt...
                    X