本文章來總結幾個利用php中的ftp功能來實現通過FTP上傳文件,有需要學習的朋友可參考參考.
ftp_get() 函數從 FTP 服務器上下載一個文件,若成功則返回 true,失敗則返回 false.
語法:ftp_get(ftp_connection,local,remote,mode,resume)
ftp_connect() 函數建立一個新的 FTP 連接,若成功,則返回一個連接標識,否則返回 false.
語法:ftp_connect(host,port,timeout)
ftp_login() 函數登錄 FTP 服務器,若成功則返回 true,失敗則返回 false 并發出一個警告.
語法:ftp_login(ftp_connection,username,password)
三個函數己經介紹好了,現在開始了.
例1,代碼如下:
- $ftp_server = "*.*.*.*";
- $ftp_user = "lu";
- $ftp_pass = "love you";
- // set up a connection or die
- $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
- $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
- if ((!$conn_id) || (!$login_result)) {
- echo "FTP connection has failed!";
- echo "Attempted to connect to $ftp_server for user $ftp_user_name";
- exit;
- } else {
- echo "Connected to $ftp_server, for user $ftp_user_name";
- }
- // try to login
- $filename=date('Ymd').".xml";
- $source_file="/usr/local/IVR/sendwireless/xml/data/".$filename; //源地址
- echo $source_file;
- $destination_file="/ITC/admin/logstat/ftplog/".$filename; //目標地址
- $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY) or die("Couldn't connect to $ftp_server");
- ftp_quit($conn_id);
- if (!$upload) {
- echo "FTP upload has failed!";
- } else {
- echo "Uploaded $source_file to $ftp_server as $destination_file";
- }
- ftp_close($conn_id);
上傳時先傳至本地對文件作必要的修改,如加水印等等操作,然后再通過FTP傳至遠程服務器.
例2,代碼如下:
- //上傳圖片
- if ($_FILES['pic']['name'])
- {
- $file_path='/opt/www/img/';
- $pic = upload('pic', $filename, 'jpg|jpeg|gif|bmp|png', $file_path);
- if(!$pic)
- {
- echo "圖片上傳失敗!";
- exit;
- }
- require_once(ROOT_PATH . 'Lib/Class/Ftp.class.php');
- $ftp = new ftp("127.0.0.1","gamezeroftp","123456","/opt/www");
- $localfile='/opt/www/img/'.$pic;
- $remotefile='/opt/www/gamepics/'.$pic;
- $ftpput = $ftp->put($localfile, $remotefile); //FTP上傳原圖到遠程服務器
- if(!$ftpput){
- echo "上傳圖片到遠程服務器失敗!";
- }
- $ftp->bye(); //關閉FTP連接
- }
附上FTP操作類,代碼如下:
- ftpUrl=$ftpUrl;
- }
- if($ftpUser){
- $this->ftpUser=$ftpUser;
- }
- if($ftpPass){
- $this->ftpPass=$ftpPass;
- }
- if($ftpUrl){
- $this->ftpDir=$ftpDir;
- }
- if ($this->ftpR = ftp_connect($this->ftpUrl, 21)) {
- if (ftp_login($this->ftpR, $this->ftpUser, $this->ftpPass)) {
- if (!emptyempty($this->ftpDir)) {
- ftp_chdir($this->ftpR, $this->ftpDir);
- }
- ftp_pasv($this->ftpR, true);//R 啟用被動模式;
- $status = 1;
- } else {
- $status = 3;
- }
- } else {
- $status = 2;
- }
- }
- //R 切換目錄;
- function cd($dir) {
- return ftp_chdir($this->ftpR, $dir);
- }
- //R 返回當前路勁;
- function pwd() {
- return ftp_pwd($this->ftpR);
- }
- //R 創建目錄
- function mkdir($directory) {
- return ftp_mkdir($this->ftpR,$directory);
- }
- //R 刪除目錄
- function rmdir($directory) {
- return ftp_rmdir($this->ftpR,$directory);
- }
- //R 上傳文件;
- function put($localFile, $remoteFile = '') {
- if ($remoteFile == '') {
- $remoteFile = end(explode('/', $localFile));
- }
- $res = ftp_nb_put($this->ftpR, $remoteFile, $localFile, FTP_BINARY);
- while ($res == FTP_MOREDATA) {
- $res = ftp_nb_continue($this->ftpR);
- }
- if ($res == FTP_FINISHED) {
- return true;
- } elseif ($res == FTP_FAILED) {
- return false;
- }
- }
- //R 下載文件;
- function get($remoteFile, $localFile = '') {
- if ($localFile == '') {
- $localFile = end(explode('/', $remoteFile));
- }
- if (ftp_get($this->ftpR, $localFile, $remoteFile, FTP_BINARY)) {
- $flag = true;
- } else {
- $flag = false;
- }
- return $flag;
- }
- //R 文件大小;
- function size($file) {
- return ftp_size($this->ftpR, $file);
- }
- //R 文件是否存在;
- function isFile($file) {
- if ($this->size($file) >= 0) {
- return true;
- } else {
- return false;
- }
- }
- //R 文件時間
- function fileTime($file) {
- return ftp_mdtm($this->ftpR, $file);
- }
- //R 刪除文件;
- function unlink($file) {
- return ftp_delete($this->ftpR, $file);
- }//開源軟件:Vevb.com
- function nlist($dir = '/service/resource/') {
- return ftp_nlist($this->ftpR, $dir);
- }
- //R 關閉連接;
- function bye() {
- return ftp_close($this->ftpR);
- }
- }
新聞熱點
疑難解答