views:

45

answers:

4

Hi,

I read the manual that filesize() is able to calculate file size from remote file. However, when I try to do that with snippet below. I got error PHP Warning: filesize(): stat failed for http://someserver/free_wallpaper/jpg/0000122_480_320.jpg in /tmp/test.php on line 5

Here's my snippet:

$file = "http://someserver/free_wallpaper/jpg/0000122_480_320.jpg";
echo filesize( $file );

Turns out, I can't use HTTP for filesize(). Case close. I'll use snippet here as a work-around solution.

A: 

I don't know where you read that. filesize requires stat, and based on the HTTP wrapper page, I don't think it supports stat on any version of PHP.

Matthew Flaschen
+2  A: 

filesize doesn't work for HTTP - it depends on stat, which isn't supported for the HTTP(S) protocol.

The PHP man page for filesize says:

Refer to List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.

This doesn't mean every protocol/wrapper works "out of the box" with filesize. You could always get around that by doing a full GET of the remote URL and calculating the size of the data you get back, of if you can get a Content-Length header you could try a HEAD request to avoid transferring the file data.

Matthew Iselin
Ah, ok. I miss-read that doc:(.
silent
@silent: Updated my answer with a few possible workarounds.
Matthew Iselin
Updated question. I've added link of workaround I'll use.
silent
A: 

You might want to investigate using http_head(). I think the snippet you reference downloads the file to determine the file size, which may not be necessary. If the web server you are referencing sends back accurate header information, you should be able to determine file-size, date-modified and several other useful identifying features.

Andrew
A: 

if you want to get the remote picture size, try to use function: getimagesize()

TechZi