Dateigröße von remote-Datei ermitteln

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

  • Dateigröße von remote-Datei ermitteln

    Hallo zusammen,

    gibt es eine Möglichkeit, die Dateigröße einer Datei auf einem anderen Server festzustellen? filesize geht logischerweise nicht. Ich bin auch für Curl, wget oder sonstiges zu haben :-) Die Datei soll aber nciht runtergeladen werden, nur die Dateigröße ermittelt.

    Vielen Dank!

    strauberry

  • #2
    Du könntest einen Http-Request absetzen, nur die Header auslesen und nach der Content-Length suchen. Die muss afaik aber nicht zwangsläufig mitgesendet werden.

    Kommentar


    • #3
      Einen Http HEAD Request !
      Wir werden alle sterben

      Kommentar


      • #4
        Hab da jetzt mal sowas gebaut:

        PHP-Code:
        function on_curl_header($ch$header) { 
           
        $trimmed rtrim($header);
           if (
        preg_match('/^Content-Length: (\d+)$/'$trimmed$matches)) { 
              
        $this->file_size $matches[1];
           } 
           return 
        strlen($header); 

            
        function 
        on_curl_write($ch$data) {}
            
        function 
        testFilesize() {
                
           
        $ch curl_init();         
           
        $opts = array();
           
        $opts[CURLOPT_HEADERFUNCTION] = array($this'on_curl_header');
           
        $opts[CURLOPT_WRITEFUNCTION] = array($this'on_curl_write');
           
        $opts[CURLOPT_URL] = "xyz";
           
        $opts[CURLOPT_HEADER] = 0;
           
        $opts[CURLOPT_FOLLOWLOCATION] = true;
                 
           
        $ch curl_init();
           
        curl_setopt_array($ch$opts);
              
           
        curl_exec($ch);
           
        curl_close($ch);
                      
           echo 
        $this->file_size;


        Kommentar


        • #5
          Warum benutzt du denn eine leere write function und warum, wenn du eh nichts schreibst nicht einfach einen Header Request mit CURLOPT_HEADER = true und CURLOPT_NOBODY = true?
          Oder statt mit curl mit fsockopen (hier ohne Fehler abfangen)
          PHP-Code:
          fsockopen(HOSTPORT$errnr$errstrTIMEOUT)){
          $request  "HEAD " PATH " HTTP/1.1\r\n";
          $request .= "Host: " HOST "\r\n";
          $request .= "Connection: Close\r\n\r\n";
          fputs($socket$request);
          $header fgets($socket1024);
          while(!
          feof($socket)){ 
           
          $header .= fgets($socket1024);

          Kommentar


          • #6
            Warum benutzt du denn eine leere write function und warum, wenn du eh nichts schreibst nicht einfach einen Header Request mit CURLOPT_HEADER = true und CURLOPT_NOBODY = true?
            Weil ich bei den zig Optionen die wohl übersehen habe :-) Danke für den Hinweis!

            Kommentar

            Lädt...
            X