Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : FTP Functions : ftp_size

ftp_size

Returns the size of the given file (PHP 4, PHP 5)
int ftp_size ( resource ftp_stream, string remote_file )

Example 749. ftp_size() example

<?php

$file
= 'somefile.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get the size of $file
$res = ftp_size($conn_id, $file);

if (
$res != -1) {
   echo
"size of $file is $res bytes";
} else {
   echo
"couldn't get the size";
}

// close the connection
ftp_close($conn_id);

?>

Code Examples / Notes » ftp_size

adams

Well this function is nice but if you have files larger then 2.1Gb or 2.1 Billion Bytes you cannot get its size.

29-sep-2004 02:10

To get a dirsize recursive you can use this simple function:
<?php # copyright by fackelkind | codeMaster
function getRecDirSize ($connection, $dir){
$temp = ftp_rawlist ($connection, "-alR $dir");
foreach ($temp as $file){
if (ereg ("([-d][rwxst-]+).* ([0-9]) ([a-zA-Z0-9]+).* ([a-zA-Z0-9]+).* ([0-9]*) ([a-zA-Z]+[0-9: ]*[0-9]) ([0-9]{2}:[0-9]{2}) (.+)", $file, $regs)){  
$isdir = (substr ($regs[1],0,1) == "d");
if (!$isdir)
$size += $regs[5];
}
}
return $size;
}
$dirSize = getRecDirSize ($conID, "/");
?>


nicke_

This will return the filesize on remote host and the size if you download it in FTP_BINARY mode. If you are using FTP_ASCII in ftp_get() the size can be changed.

chuck

note that project_t4 at hotmail dot com's example above doesn't work in general, though it works on his Win2K/Apache server; as far as I can tell there is no way to check over ftp whether a directory exists.  This function's behavior given a directory name seems to be at least somewhat dependent on your OS, web server, or ftp server, I don't know which.

project_t4

Just to let people out there know, on my windows 2000 server running Apache and php i was returned 0 not -1 for directories.
foreach ($dir_list as $item)
{
 if(ftp_size($conn_id, $item) == "0")
 {
 echo "
Directory:: ".$item;
 } else {
 echo "
File:: ".$item;
 }
}
This outputs a list of the remote directory and indicates which items are directories and which are files.


c_muller

For checking if a certain folder exists try using ftp_nlist() function to get a directory list in array. By using in_array('foldername') you can find out if it is there or not.

miccots

2 adams[AT]techweavers[DOT]net:
To get a size of large file (f. ex.: 3.2 Gb) you have to format the result returned by ftp_size():
$size = sprintf ("%u", ftp_size($connection, $file_name));
So you can get the real size of big files. But this method is not good for checking is this a dir (when ftp_size() returns -1).


victor59

$file= 'filename with space.txt';
$size = ftp_size($this->ftp, urldecode($file) );
this one can correctly return the size
otherwize, it always return -1


Change Language


Follow Navioo On Twitter
ftp_alloc
ftp_cdup
ftp_chdir
ftp_chmod
ftp_close
ftp_connect
ftp_delete
ftp_exec
ftp_fget
ftp_fput
ftp_get_option
ftp_get
ftp_login
ftp_mdtm
ftp_mkdir
ftp_nb_continue
ftp_nb_fget
ftp_nb_fput
ftp_nb_get
ftp_nb_put
ftp_nlist
ftp_pasv
ftp_put
ftp_pwd
ftp_quit
ftp_raw
ftp_rawlist
ftp_rename
ftp_rmdir
ftp_set_option
ftp_site
ftp_size
ftp_ssl_connect
ftp_systype
eXTReMe Tracker