obtaining the size of a file

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Steve

    obtaining the size of a file

    I need to obtain the filesize of a file thats not on the same server. As
    filesize() need a realpath and not a url how else can this be done?
  • Gordon Burditt

    #2
    Re: obtaining the size of a file

    >I need to obtain the filesize of a file thats not on the same server. As[color=blue]
    >filesize() need a realpath and not a url how else can this be done?[/color]

    Fetch the file and look at the size of it?

    How *can* you access this file? Some FTP servers will provide the
    file size if you ask them nicely. HTTP doesn't (unless you get the
    file too). And if it's dynamic content, it might be a different
    size every time you fetch it.

    Gordon L. Burditt

    Comment

    • Steve

      #3
      Re: obtaining the size of a file

      [color=blue][color=green]
      > >I need to obtain the filesize of a file thats not on the same server. As
      > >filesize() need a realpath and not a url how else can this be done?[/color]
      >
      > Fetch the file and look at the size of it?
      >
      > How *can* you access this file? Some FTP servers will provide the
      > file size if you ask them nicely. HTTP doesn't (unless you get the
      > file too). And if it's dynamic content, it might be a different
      > size every time you fetch it.[/color]

      Hmm, could you make a HEAD request? That has a content size header,
      although I don't know if you'd have to factor in the size of the header
      itself and whether any encoding is used.

      ---
      Steve

      Comment

      • Janwillem Borleffs

        #4
        Re: obtaining the size of a file

        Steve wrote:[color=blue]
        > Hmm, could you make a HEAD request? That has a content size header,
        > although I don't know if you'd have to factor in the size of the
        > header itself and whether any encoding is used.
        >[/color]

        Sure, per ezample:

        $host = 'www.google.com ';
        $path = '/images/logo.gif';
        $bytes = 0;

        if ($fp = fsockopen($host , 80)) {
        fputs($fp, "HEAD $path HTTP/1.0\r\n");
        fputs($fp, "Host: $host\r\n\r\n") ;
        while (!feof($fp) && !$bytes) {
        if (preg_match('/content\-length\s*:\s*(\ d+)/i',
        fgets($fp, 1024),
        $m)) {
        $bytes = $m[1];
        }
        }
        fclose($fp);
        }

        print "size is $bytes bytes";


        JW


        Comment

        Working...