日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php ftp 创建文件夹失败,phpftp上传多个文件时失败

發布時間:2024/9/30 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php ftp 创建文件夹失败,phpftp上传多个文件时失败 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遍歷文件夾,打算批量上傳到FTP上,li下有 dir和 files兩個數組,一個是目錄數組,一個文件數組

用ftp上傳時失敗,單個上傳沒有問題??? 怎么解決啊

foreach ($li['files'] as $i){$c+=1;$ftp->upload($i,$i);if($c>= count($li['files'])/2){set_time_limit(300);}}

回復討論(解決方案)

你有創建目錄嗎?

你有創建目錄嗎?

有啊有啊, 第一個文件好像可以,后續就不行了

我沒看到,不好說

我沒看到,不好說

這是從網上找的一個PHP FTP類 ,加了個遍歷文件夾函數,單個文件上傳沒一點問題,如果用foreach的話連錯誤輸出都沒有,

VAR_DUMP也沒輸出,像下面這種單個的加好多條都沒問題,能傳上去,$ftp->upload('smx/ewm/ewm.html','smx/ewm/ewm.html');

但像這個的,就連錯誤輸出($this->_error("ftp_unable_to_upload:localpath[".$localpath."]/remotepath[".$remotepath."]");)都沒

foreach ($li['files'] as $i){$c+=1;$r = $ftp->upload($i,$i);if($r){echo 'ok- '.$i.'

';}else{echo 'fail- '.$i.'

';}}

?'','username'=>'','password'=>'','port'=>''...); */public function __construct($config = array()) {if(count($config) > 0) {$this->_init($config);}}/** * FTP連接 * * @access public * @param array 配置數組 * @returnboolean */public function connect($config = array()) {if(count($config) > 0) {$this->_init($config);}if(FALSE === ($this->conn_id = @ftp_connect($this->hostname,$this->port))) {if($this->debug === TRUE) {$this->_error("ftp_unable_to_connect");}return FALSE;}if( ! $this->_login()) {if($this->debug === TRUE) {$this->_error("ftp_unable_to_login");}return FALSE;}if($this->passive === TRUE) {ftp_pasv($this->conn_id, TRUE);}return TRUE;}/** * 目錄改變 * * @access public * @param string 目錄標識(ftp) * @paramboolean * @returnboolean */public function chgdir($path = '', $supress_debug = FALSE) {if($path == '' OR ! $this->_isconn()) {return FALSE;}$result = @ftp_chdir($this->conn_id, $path);if($result === FALSE) {if($this->debug === TRUE AND $supress_debug == FALSE) {$this->_error("ftp_unable_to_chgdir:dir[".$path."]");}return FALSE;}return TRUE;}/** * 目錄生成 * * @access public * @param string 目錄標識(ftp) * @paramint 文件權限列表 * @returnboolean */public function mkdir($path = '', $permissions = NULL) {if($path == '' OR ! $this->_isconn()) {return FALSE;}$result = @ftp_mkdir($this->conn_id, $path);if($result === FALSE) {if($this->debug === TRUE) {$this->_error("ftp_unable_to_mkdir:dir[".$path."]");}return FALSE;}if( ! is_null($permissions)) {$this->chmod($path,(int)$permissions);}return TRUE;}/** * 生成批量目錄,目錄數組要排序 * * @access public * @param string 目錄標識(ftp) * @paramint 文件權限列表 * @returnboolean */public function mkpdir($path = array()) {if($path == '' OR ! $this->_isconn()) {return FALSE;}foreach ($path as $d){$result = @ftp_mkdir($this->conn_id, $d);if($result === FALSE) {if($this->debug === TRUE) {$this->_error("ftp_unable_to_mkpdir:dir[".$path."]");}return FALSE;}}return TRUE;}/** * 上傳 * * @access public * @param string 本地目錄標識 * @paramstring遠程目錄標識(ftp) * @paramstring上傳模式 auto || ascii * @paramint上傳后的文件權限列表 * @returnboolean */public function upload($localpath, $remotepath, $mode = 'auto', $permissions = NULL) {if( ! $this->_isconn()) {return FALSE;}if( ! file_exists($localpath)) {if($this->debug === TRUE) {$this->_error("ftp_no_source_file:".$localpath);}return FALSE;}if($mode == 'auto') {$ext = $this->_getext($localpath);$mode = $this->_settype($ext);}$mode = ($mode == 'ascii') ? FTP_ASCII : FTP_BINARY;$result = @ftp_put($this->conn_id, $remotepath, $localpath, $mode);if($result === FALSE) {if($this->debug === TRUE) {$this->_error("ftp_unable_to_upload:localpath[".$localpath."]/remotepath[".$remotepath."]"); //這條錯誤輸出都沒}return FALSE;}if( ! is_null($permissions)) {$this->chmod($remotepath,(int)$permissions);}return TRUE;}/** * 文件批量上傳 * * @access public * @param string 本地目錄標識 * @paramstring遠程目錄標識(ftp) * @paramstring上傳模式 auto || ascii * @paramint上傳后的文件權限列表 * @returnboolean */public function uppload($file) {if( ! $this->_isconn()) {return FALSE;}foreach($file as $i){$this->upload($i,$i);}return TRUE;}/** * 關閉FTP * * @access public * @returnboolean */public function close() {if( ! $this->_isconn()) {return FALSE;}return @ftp_close($this->conn_id);}/** * FTP成員變量初始化 * * @accessprivate * @paramarray配置數組 * @returnvoid */private function _init($config = array()) {foreach($config as $key => $val) {if(isset($this->$key)) {$this->$key = $val;}}//特殊字符過濾$this->hostname = preg_replace('|.+?://|','',$this->hostname);}/** * FTP登陸 * * @access private * @returnboolean */private function _login() {return @ftp_login($this->conn_id, $this->username, $this->password);}/** * 判斷con_id * * @access private * @returnboolean */private function _isconn() {if( ! is_resource($this->conn_id)) {if($this->debug === TRUE) {$this->_error("ftp_no_connection");}return FALSE;}return TRUE;}/** * 從文件名中獲取后綴擴展 * * @access private * @param string 目錄標識 * @returnstring */private function _getext($filename) {if(FALSE === strpos($filename, '.')) {return 'txt';}$extarr = explode('.', $filename);return end($extarr);}/** * 從后綴擴展定義FTP傳輸模式 ascii 或 binary * * @access private * @param string 后綴擴展 * @returnstring */private function _settype($ext) {$text_type = array ('txt','text','php','phps','php4','js','css','htm','html','phtml','shtml','log','xml');return (in_array($ext, $text_type)) ? 'ascii' : 'binary';}function listDir($dirname) {static $r = array('dir'=> array(),'files'=> array(),); $dir = opendir ($dirname ); while (($file = readdir ($dir )) != false ) {if ($file == "." || $file == "..") { continue;}if (is_dir ($dirname . "/" . $file )) {array_push ($r['dir'], $dirname . "/" . $file );$this->listDir ($dirname . "/" . $file ); } else { array_push ($r['files'], $dirname . "/" . $file );$this->upload($dirname . "/" . $file,$dirname . "/" . $file); } }return $r; }/** * 錯誤日志記錄 * * @access prvate * @returnboolean */private function _error($msg) {if(gettype($msg) == 'array'){return @file_put_contents('ftp_err.log', "date[".date("Y-m-d H:i:s")."]-hostname[".$this->hostname."]-username[".$this->username."]-password[".$this->password."]-msg[".implode('-',$msg)."]\n", FILE_APPEND);}else{return @file_put_contents('ftp_err.log', "date[".date("Y-m-d H:i:s")."]-hostname[".$this->hostname."]-username[".$this->username."]-password[".$this->password."]-msg[".$msg."]\n", FILE_APPEND);}}}/*End of file ftp.php*//*Location /Apache Group/htdocs/ftp.php*/

好了,是類 多次執行,覆蓋了之前的,原生FTP操作 OK

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴

本文系統來源:php中文網

總結

以上是生活随笔為你收集整理的php ftp 创建文件夹失败,phpftp上传多个文件时失败的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。