⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftp.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 3 页
字号:
		return true;	}	/**	 * Method to rename a file/folder on the FTP server	 *	 * @access public	 * @param string $from Path to change file/folder from	 * @param string $to Path to change file/folder to	 * @return boolean True if successful	 */	function rename($from, $to) {		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			if (@ftp_rename($this->_conn, $from, $to) === false) {				JError::raiseWarning('35', 'JFTP::rename: Bad response' );				return false;			}			return true;		}		// Send rename from command to the server		if (!$this->_putCmd('RNFR '.$from, 350)) {			JError::raiseWarning('35', 'JFTP::rename: Bad response', 'Server response: '.$this->_response.' [Expected: 320] From path sent: '.$from );			return false;		}		// Send rename to command to the server		if (!$this->_putCmd('RNTO '.$to, 250)) {			JError::raiseWarning('35', 'JFTP::rename: Bad response', 'Server response: '.$this->_response.' [Expected: 250] To path sent: '.$to );			return false;		}		return true;	}	/**	 * Method to change mode for a path on the FTP server	 *	 * @access public	 * @param string		$path	Path to change mode on	 * @param string/int	$mode	Octal value to change mode to, e.g. '0777', 0777 or 511	 * @return boolean		True if successful	 */	function chmod($path, $mode) {		// If no filename is given, we assume the current directory is the target		if ($path == '') {			$path = '.';		}		// Convert the mode to a string		if (is_int($mode)) {			$mode = decoct($mode);		}		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			if (@ftp_site($this->_conn, 'CHMOD '.$mode.' '.$path) === false) {				if($this->_OS != 'WIN') {					JError::raiseWarning('35', 'JFTP::chmod: Bad response' );				}				return false;			}			return true;		}		// Send change mode command and verify success [must convert mode from octal]		if (!$this->_putCmd('SITE CHMOD '.$mode.' '.$path, array(200, 250))) {			if($this->_OS != 'WIN') {				JError::raiseWarning('35', 'JFTP::chmod: Bad response', 'Server response: '.$this->_response.' [Expected: 200 or 250] Path sent: '.$path.' Mode sent: '.$mode);			}			return false;		}		return true;	}	/**	 * Method to delete a path [file/folder] on the FTP server	 *	 * @access public	 * @param string $path Path to delete	 * @return boolean True if successful	 */	function delete($path) {		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			if (@ftp_delete($this->_conn, $path) === false) {				if (@ftp_rmdir($this->_conn, $path) === false) {					JError::raiseWarning('35', 'JFTP::delete: Bad response' );					return false;				}			}			return true;		}		// Send delete file command and if that doesn't work, try to remove a directory		if (!$this->_putCmd('DELE '.$path, 250)) {			if (!$this->_putCmd('RMD '.$path, 250)) {				JError::raiseWarning('35', 'JFTP::delete: Bad response', 'Server response: '.$this->_response.' [Expected: 250] Path sent: '.$path );				return false;			}		}		return true;	}	/**	 * Method to create a directory on the FTP server	 *	 * @access public	 * @param string $path Directory to create	 * @return boolean True if successful	 */	function mkdir($path) {		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			if (@ftp_mkdir($this->_conn, $path) === false) {				JError::raiseWarning('35', 'JFTP::mkdir: Bad response' );				return false;			}			return true;		}		// Send change directory command and verify success		if (!$this->_putCmd('MKD '.$path, 257)) {			JError::raiseWarning('35', 'JFTP::mkdir: Bad response', 'Server response: '.$this->_response.' [Expected: 257] Path sent: '.$path );			return false;		}		return true;	}	/**	 * Method to restart data transfer at a given byte	 *	 * @access public	 * @param int $point Byte to restart transfer at	 * @return boolean True if successful	 */	function restart($point) {		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			if (@ftp_site($this->_conn, 'REST '.$point) === false) {				JError::raiseWarning('35', 'JFTP::restart: Bad response' );				return false;			}			return true;		}		// Send restart command and verify success		if (!$this->_putCmd('REST '.$point, 350)) {			JError::raiseWarning('35', 'JFTP::restart: Bad response', 'Server response: '.$this->_response.' [Expected: 350] Restart point sent: '.$point );			return false;		}		return true;	}	/**	 * Method to create an empty file on the FTP server	 *	 * @access public	 * @param string $path Path local file to store on the FTP server	 * @return boolean True if successful	 */	function create($path) {		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			// turn passive mode on			if (@ftp_pasv($this->_conn, true) === false) {				JError::raiseWarning('36', 'JFTP::create: Unable to use passive mode' );				return false;			}			$buffer = fopen('buffer://tmp', 'r');			if (@ftp_fput($this->_conn, $path, $buffer, FTP_ASCII) === false) {				JError::raiseWarning('35', 'JFTP::create: Bad response' );				fclose($buffer);				return false;			}			fclose($buffer);			return true;		}		// Start passive mode		if (!$this->_passive()) {			JError::raiseWarning('36', 'JFTP::create: Unable to use passive mode' );			return false;		}		if (!$this->_putCmd('STOR '.$path, array (150, 125))) {			@ fclose($this->_dataconn);			JError::raiseWarning('35', 'JFTP::create: Bad response', 'Server response: '.$this->_response.' [Expected: 150 or 125] Path sent: '.$path );			return false;		}		// To create a zero byte upload close the data port connection		fclose($this->_dataconn);		if (!$this->_verifyResponse(226)) {			JError::raiseWarning('37', 'JFTP::create: Transfer Failed', 'Server response: '.$this->_response.' [Expected: 226] Path sent: '.$path );			return false;		}		return true;	}	/**	 * Method to read a file from the FTP server's contents into a buffer	 *	 * @access public	 * @param string $remote Path to remote file to read on the FTP server	 * @param string $buffer Buffer variable to read file contents into	 * @return boolean True if successful	 */	function read($remote, &$buffer) {		// Determine file type		$mode = $this->_findMode($remote);		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			// turn passive mode on			if (@ftp_pasv($this->_conn, true) === false) {				JError::raiseWarning('36', 'JFTP::read: Unable to use passive mode' );				return false;			}			$tmp = fopen('buffer://tmp', 'br+');			if (@ftp_fget($this->_conn, $tmp, $remote, $mode) === false) {				fclose($tmp);				JError::raiseWarning('35', 'JFTP::read: Bad response' );				return false;			}			// Read tmp buffer contents			rewind($tmp);			$buffer = '';			while (!feof($tmp)) {				$buffer .= fread($tmp, 8192);			}			fclose($tmp);			return true;		}		$this->_mode($mode);		// Start passive mode		if (!$this->_passive()) {			JError::raiseWarning('36', 'JFTP::read: Unable to use passive mode' );			return false;		}		if (!$this->_putCmd('RETR '.$remote, array (150, 125))) {			@ fclose($this->_dataconn);			JError::raiseWarning('35', 'JFTP::read: Bad response', 'Server response: '.$this->_response.' [Expected: 150 or 125] Path sent: '.$remote );			return false;		}		// Read data from data port connection and add to the buffer		$buffer = '';		while (!feof($this->_dataconn)) {			$buffer .= fread($this->_dataconn, 4096);		}		// Close the data port connection		fclose($this->_dataconn);		// Let's try to cleanup some line endings if it is ascii		if ($mode == FTP_ASCII) {			$buffer = preg_replace("/".CRLF."/", $this->_lineEndings[$this->_OS], $buffer);		}		if (!$this->_verifyResponse(226)) {			JError::raiseWarning('37', 'JFTP::read: Transfer Failed', 'Server response: '.$this->_response.' [Expected: 226] Path sent: '.$remote );			return false;		}		return true;	}	/**	 * Method to get a file from the FTP server and save it to a local file	 *	 * @access public	 * @param string $local Path to local file to save remote file as	 * @param string $remote Path to remote file to get on the FTP server	 * @return boolean True if successful	 */	function get($local, $remote) {		// Determine file type		$mode = $this->_findMode($remote);		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			// turn passive mode on			if (@ftp_pasv($this->_conn, true) === false) {				JError::raiseWarning('36', 'JFTP::get: Unable to use passive mode' );				return false;			}			if (@ftp_get($this->_conn, $local, $remote, $mode) === false) {				JError::raiseWarning('35', 'JFTP::get: Bad response' );				return false;			}			return true;		}		$this->_mode($mode);		// Check to see if the local file can be opened for writing		$fp = fopen($local, "wb");		if (!$fp) {			JError::raiseWarning('38', 'JFTP::get: Unable to open local file for writing', 'Local path: '.$local );			return false;		}		// Start passive mode		if (!$this->_passive()) {			JError::raiseWarning('36', 'JFTP::get: Unable to use passive mode' );			return false;		}		if (!$this->_putCmd('RETR '.$remote, array (150, 125))) {			@ fclose($this->_dataconn);			JError::raiseWarning('35', 'JFTP::get: Bad response', 'Server response: '.$this->_response.' [Expected: 150 or 125] Path sent: '.$remote );			return false;		}		// Read data from data port connection and add to the buffer		while (!feof($this->_dataconn)) {			$buffer = fread($this->_dataconn, 4096);			$ret = fwrite($fp, $buffer, 4096);		}		// Close the data port connection and file pointer		fclose($this->_dataconn);		fclose($fp);		if (!$this->_verifyResponse(226)) {			JError::raiseWarning('37', 'JFTP::get: Transfer Failed', 'Server response: '.$this->_response.' [Expected: 226] Path sent: '.$remote );			return false;		}		return true;	}	/**	 * Method to store a file to the FTP server	 *	 * @access public	 * @param string $local Path to local file to store on the FTP server	 * @param string $remote FTP path to file to create	 * @return boolean True if successful	 */	function store($local, $remote = null) {		// If remote file not given, use the filename of the local file in the current		// working directory		if ($remote == null) {			$remote = basename($local);		}		// Determine file type		$mode = $this->_findMode($remote);		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			// turn passive mode on			if (@ftp_pasv($this->_conn, true) === false) {				JError::raiseWarning('36', 'JFTP::store: Unable to use passive mode' );				return false;			}			if (@ftp_put($this->_conn, $remote, $local, $mode) === false) {				JError::raiseWarning('35', 'JFTP::store: Bad response' );				return false;			}			return true;		}		$this->_mode($mode);		// Check to see if the local file exists and open for reading if so		if (@ file_exists($local)) {			$fp = fopen($local, "rb");			if (!$fp) {				JError::raiseWarning('38', 'JFTP::store: Unable to open local file for reading', 'Local path: '.$local );				return false;			}		} else {			JError::raiseWarning('38', 'JFTP::store: Unable to find local path', 'Local path: '.$local );			return false;		}		// Start passive mode		if (!$this->_passive()) {			@ fclose($fp);			JError::raiseWarning('36', 'JFTP::store: Unable to use passive mode' );			return false;		}		// Send store command to the FTP server		if (!$this->_putCmd('STOR '.$remote, array (150, 125))) {			@ fclose($fp);			@ fclose($this->_dataconn);			JError::raiseWarning('35', 'JFTP::store: Bad response', 'Server response: '.$this->_response.' [Expected: 150 or 125] Path sent: '.$remote );			return false;		}		// Do actual file transfer, read local file and write to data port connection		while (!feof($fp)) {			$line = fread($fp, 4096);			do {				if (($result = @ fwrite($this->_dataconn, $line)) === false) {					JError::raiseWarning('37', 'JFTP::store: Unable to write to data port socket' );					return false;				}				$line = substr($line, $result);			} while ($line != "");		}		fclose($fp);		fclose($this->_dataconn);		if (!$this->_verifyResponse(226)) {			JError::raiseWarning('37', 'JFTP::store: Transfer Failed', 'Server response: '.$this->_response.' [Expected: 226] Path sent: '.$remote );			return false;		}		return true;	}	/**	 * Method to write a string to the FTP server	 *	 * @access public	 * @param string $remote FTP path to file to write to	 * @param string $buffer Contents to write to the FTP server	 * @return boolean True if successful	 */	function write($remote, $buffer) {		// Determine file type		$mode = $this->_findMode($remote);		// If native FTP support is enabled lets use it...		if (FTP_NATIVE) {			// turn passive mode on			if (@ftp_pasv($this->_conn, true) === false) {				JError::raiseWarning('36', 'JFTP::write: Unable to use passive mode' );				return false;			}			$tmp = fopen('buffer://tmp', 'br+');			fwrite($tmp, $buffer);			rewind($tmp);			if (@ftp_fput($this->_conn, $remote, $tmp, $mode) === false) {				fclose($tmp);				JError::raiseWarning('35', 'JFTP::write: Bad response' );				return false;			}			fclose($tmp);			return true;		}		// First we need to set the transfer mode		$this->_mode($mode);		// Start passive mode		if (!$this->_passive()) {			JError::raiseWarning('36', 'JFTP::write: Unable to use passive mode' );			return false;		}		// Send store command to the FTP server		if (!$this->_putCmd('STOR '.$remote, array (150, 125))) {			JError::raiseWarning('35', 'JFTP::write: Bad response', 'Server response: '.$this->_response.' [Expected: 150 or 125] Path sent: '.$remote );			@ fclose($this->_dataconn);			return false;		}		// Write buffer to the data connection port		do {			if (($result = @ fwrite($this->_dataconn, $buffer)) === false) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -