note 71098 deleted from function.filesize by aharvey

From: Date: Tue, 22 Jan 2013 00:21:54 +0000
Subject: note 71098 deleted from function.filesize by aharvey
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-193335@lists.php.net to get a copy of this message
Note Submitter: Josh Finlay <josh at glamourcastle dot com> ---- I know there has been alot of remote filesize snippets posted, but I'll post mine also. It supports HTTP/HTTPS/FTP/FTPS and detects which type it should use. It needs --enable-ftp for the FTP/FTPS functions. I hope this works for someone. <?php function remotefsize($url) { $sch = parse_url($url, PHP_URL_SCHEME); if (($sch != "http") && ($sch != "https") && ($sch != "ftp") && ($sch != "ftps")) { return false; } if (($sch == "http") || ($sch == "https")) { $headers = get_headers($url, 1); if ((!array_key_exists("Content-Length", $headers))) { return false; } return $headers["Content-Length"]; } if (($sch == "ftp") || ($sch == "ftps")) { $server = parse_url($url, PHP_URL_HOST); $port = parse_url($url, PHP_URL_PORT); $path = parse_url($url, PHP_URL_PATH); $user = parse_url($url, PHP_URL_USER); $pass = parse_url($url, PHP_URL_PASS); if ((!$server) || (!$path)) { return false; } if (!$port) { $port = 21; } if (!$user) { $user = "anonymous"; } if (!$pass) { $pass = "phpos@"; } switch ($sch) { case "ftp": $ftpid = ftp_connect($server, $port); break; case "ftps": $ftpid = ftp_ssl_connect($server, $port); break; } if (!$ftpid) { return false; } $login = ftp_login($ftpid, $user, $pass); if (!$login) { return false; } $ftpsize = ftp_size($ftpid, $path); ftp_close($ftpid); if ($ftpsize == -1) { return false; } return $ftpsize; } } ?>

« previous php.notes (#193335) next »