|
ftp_size
Returns the size of the given file
(PHP 4, PHP 5)
Example 749. ftp_size() example<?php Code Examples / Notes » ftp_sizeadams
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 Languageftp_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 |