= PHP 4.3.0) * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category Networking * @package FTP * @author Tobias Schlitt * @author Laurent Laville * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id$ * @link http://pear.php.net/package/Net_FTP * @link http://pear.php.net/package/HTML_Progress * @since File available since Release 1.3.0 */ require_once 'Net/FTP.php'; require_once 'Net/FTP/Observer.php'; require_once 'HTML/Progress.php'; /** * Initializing test variables (required!) */ $ftp = array( 'host' => '', 'port' => 21, 'user' => '', 'pass' => '' ); $dest = 'tmp'; // this directory must exists in your ftp server ! $overwrite = true; // overwrite all existing files on the ftp server $files = array( 'HTML_Progress-1.2.0.tgz', 'php4ever.png' // initializing contents (required!) file(s) must ); // exists file(s) to upload /** * 1. Defines the FTP/Progress Observer * * @category Networking * @package FTP * @author Tobias Schlitt * @copyright 1997-2008 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: 1.4.1 * @link http://pear.php.net/package/Net_FTP * @since 0.0.1 * @access public */ class Observer_ProgressUpload extends Net_FTP_Observer { var $progress; /** * Constructor for the upload observer * * @param HTML_Progress &$progress Progress bar * * @return void */ function Observer_ProgressUpload(&$progress) { /* Call the base class constructor. */ parent::Net_FTP_Observer(); /** Configure the observer: Be sure to have an indeterminate progress meter when @link http://www.php.net/manual/en/function.ftp-nb-put.php stores a file on the FTP server (non-blocking) */ $this->progress =& $progress; $this->progress->setIndeterminate(true); } /** * Notification method * * @param mixed $event Variable describing occured event * * @return void */ function notify($event) { $this->progress->display(); $this->progress->sleep(); if ($this->progress->getPercentComplete() == 1) { $this->progress->setValue(0); } else { $this->progress->incValue(); } } } // // 2. defines the progress meter // $meter = new HTML_Progress(); $ui = &$meter->getUI(); $ui->setProgressAttributes(array( 'background-color' => '#e0e0e0' )); $ui->setStringAttributes(array( 'color' => '#996', 'background-color' => '#CCCC99' )); $ui->setCellAttributes(array( 'active-color' => '#996' )); $meter->setAnimSpeed(200); $meter->setIncrement(10); $meter->setStringPainted(true); // get space for the string $meter->setString(""); // but don't paint it $meter->setIndeterminate(true); // progress meter start in indeterminate mode ?> FTP/Progress Observer example toHtml(); @set_time_limit(0); // unlimited time operation (removed 30s default restriction) $f = new Net_FTP(); // // 3. connect to the FTP server // $ret = $f->connect($ftp['host'], $ftp['port']); if (PEAR::isError($ret)) { die($ret->getMessage()); } printf('connected at %s
', $ftp['host']); // // 4. login to the FTP server as a well-known user // $ret = $f->login($ftp['user'], $ftp['pass']); if (PEAR::isError($ret)) { $f->disconnect(); die($ret->getMessage()); } printf('login as %s
', $ftp['user']); // // 5. changes directory to final destination for upload operation // $ret = $f->cd($dest); if (PEAR::isError($ret)) { $f->disconnect(); die($ret->getMessage()); } // // 6. attachs an instance of the FTP/Progress subclass observer // $observer = new Observer_ProgressUpload($meter); $ok = $f->attach($observer); if (!$ok) { die('cannot attach a FTP Observer'); } // // 7. moves files on the FTP server // foreach ($files as $file) { $ret = $f->put($file, basename($file), $overwrite); if (PEAR::isError($ret)) { if ($ret->getCode() == NET_FTP_ERR_OVERWRITEREMOTEFILE_FORBIDDEN && !$overwrite) { printf('%s
', $ret->getMessage()); continue; // it is just a warning when \$overwrite variable is false } die($ret->getMessage()); } printf('%s transfer completed
', basename($file)); } $f->detach($observer); // // 8. checks if files are really on the FTP server // $ret = $f->ls(null, NET_FTP_RAWLIST); if (PEAR::isError($ret)) { $f->disconnect(); die($ret->getMessage()); } print '
';
var_dump($ret);
print '
'; // // 9. says goodbye to the FTP server ! // $f->disconnect(); echo 'Done!'; ?>