奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

php語(yǔ)言

php實(shí)現(xiàn)通過(guò)ftp上傳文件

時(shí)間:2024-07-07 21:36:49 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

php實(shí)現(xiàn)通過(guò)ftp上傳文件

  在php中我們可以利用ftp_connect相關(guān)函數(shù)實(shí)現(xiàn)文件上傳與下載功能,其實(shí)就是ftp客戶端一樣的操作,下面我來(lái)給大家介紹如何利用php來(lái)實(shí)現(xiàn)。

  大概原理

  遍歷項(xiàng)目中的所有非排除文件,然后獲取 文件修改時(shí)間晚于文件上一次修改時(shí)間 的文件

  然后將這些文件,通過(guò)ftp上傳到對(duì)應(yīng)的目錄

  具體代碼如下:

  因?yàn)橹皇枪ぞ撸a很亂,見(jiàn)諒

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49

  50

  51

  52

  53

  54

  55

  56

  57

  58

  59

  60

  61

  62

  63

  64

  65

  66

  67

  68

  69

  70

  71

  72

  73

  74

  75

  76

  77

  78

  79

  80

  81

  82

  83

  84

  85

  86

  87

  88

  89

  90

  91

  92

  93

  94

  95

  96

  97

  98

  99

  100

  101

  102

  103

  104

  105

  106

  107

  108

  109

  110

  111

  112

  113

  114

  115

  116

  117

  118

  119

  120

  121

  122

  123

  124

  125

  126

  127

  128

  129

  130

  131

  132

  133

  134

  135

  136

  137

  138

  139

  140

  141

  142

  143

  144

  145

  146

  147

  148

  149

  150

  151

  152

  153

  154

  155

  156

  157

  158

  159

  160

  161

  162

  163

  164

  165

  166

  167

  168

  169

  170

  171

  172

  173

  174

  175

  176

  177

  178

  179

  180

  181

  182

  183

  184

  185

  186

  187

  188

  189

  190

  191

  192

  193

  194

  195

  196

  197

  198

  199

  200

  201

  202

  203

  204

  205

  206

  207

  208

  209

  210

  211

  212

  213

  214

  215

  216

  217

  218

  219

  220

  221

  222

  223

  224

  225

  226

  227

  228

  229

  230

  231

  232

  233

  234

  235

  236

  237

  238

  239

  240

  241

  242

  243

  244

  245

  246

  247

  248

  249

  250

  251

  252

  253

  254

  255

  256

  257

  258

  259

  260

  261

  262

  263

  264

  265

  266

  267

  268

  269

  270

  271

  272

  273

  274

  275

  276

  277

  278

  279

  280

  281

  282

  283

  284

  285

  286

  287

  288

  289

  290

  291

  292

  293

  294

  295

  296

  297

  298

  299

  300

  301

  302

  303

  304

  305

  306

  307

  308

  309

  310

  311

  312

  313

  314

  315

  316

  317

  318

  319

  320

  321

  322

  323

  324

  325

  326

  327

  328

  329

  330

  331

  332

  333

  334

  335

  336

  337

  338

  339

  340

  341

  342

  343

  344

  345

  346

  347

  348

  349

  350

  351

  352

  353

  354

  355

  356

  357

  358

  359

  360

  361

  362

  363

  364

  365

  366

  367

  368

  369

  370

  371

  372

  373

  374

  375

  376

  377

  378

  379

  380

  381

  382

  383

  384

  385

  386

  387

  388

  389

  390

  391

  392

  393

  394

  395

  396

  397

  398

  399

  400

  401

  402

  403

  404

  405

  406

  407

  408

  409

  410

  411

  412

  413

  414

  415

  416

  417

  418

  419

  420

  421

  422

  423

  424

  425

  426

  427

  428

  429

  430

  431

  432

  433

  434

  435

  436

  437

  438

  439

  440

  441

  442

  443

  444

  445

  446

  447

  448

  449

  450

  451

  452

  453

  454

  455

  456

  457

  458

  459

  460

  461

  462

  463

  464

  465

  466

  467

  468

  469

  470

  471

  472

  473

  474

  475

  476

  477

  478

  479

  480

  481

  482

  483

  484

  485

  486

  487

  488

  489

  490

  491

  492

  493

  494

  495

  496

  497

  498

  499

  500

  501

  502

  503

  504

  <?php

  error_reporting(7);

  if ($_SERVER['SERVER_ADDR'])exit;//禁止在web服務(wù)器下運(yùn)行

  $_GET['exclude'] = array('number.txt','uploads','Zend','docs','cache','You','managesdk'); //排除上傳目錄,定義為全局變量

  $fileobj = new FilerFile();

  $path = "/data/longtu/"; //項(xiàng)目目錄的根目錄

  $files = $fileobj->Zip($path); //過(guò)濾出最新的修改文件

  $path = str_replace("/data/longtu/","",$path);

  $config = array(

  'hostname' => 'xxx.xxx.xx.xxx', //ftp服務(wù)器 地址

  'username' => 'xxx',     //ftp用戶

  'password' => '?xxxxxxxxxxx', //ftp密碼

  'port' => 21         //端口

  );

  $ftp = new Ftp();

  $ftp->connect($config);       //鏈接服務(wù)器

  //$a=$ftp->filelist();

  $LOCAL_ROOT = realpath(dirname(__DIR__)."/../../");

  chdir($LOCAL_ROOT);

  foreach ($files as $k=>$v){

  $f = $path.$v;

  $tmp = $ftp->upload($f, $f);

  if($tmp){

  echo "upload $f -> success \n";

  }

  }

  //$ftp->download('ftp_upload.log','ftp_download.log');

  //

  //$ftp->upload('ftp_err.log','ftp_upload.log');

  //$ftp->download('ftp_upload.log','ftp_download.log');

  /*

  *

  *

  * $dir = "/test";

  if(@ftp_chdir($conn, $dir))

  判斷是否為文件夾

  * Enter description here ...

  * @author Administrator

  *

  */

  class FilerFile

  {

  var $time_path;

  private $fctimes = array();

  function Zip($dir)

  {

  $this->time_path = rtrim($dir,"/")."/.~~~time.php";

  //@unlink($this->time_path);

  $filelist = $this -> GetFileList($dir);

  file_put_contents($this->time_path,"<?php \n return ".var_export($this->fctimes,true).";");

  return $filelist;

  }

  function appendFilectime($file)

  {

  $time_file_path = $this->time_path;

  $ftime = @include($time_file_path);

  $ftime = $ftime ? $ftime : array();

  $time = filectime($file);

  if(!file_exists($time_file_path))file_put_contents($time_file_path,"<?php \n");

  }

  function getFileByFilectime($file)

  {

  static $time_data ;

  $time_file_path = $this->time_path;

  if (!$time_data){

  $time_data= @include_once($time_file_path);

  }

  $time_data = $time_data ? $time_data : array();

  //var_dump($file,$time_data[$file] == filectime($file));

  //echo $file."\t".$time_data[$file]."\n";

  if ($time_data[$file] == filemtime($file)){

  return false;

  }else{

  return $file;

  }

  }

  function GetFileList($dir,$path="")

  {

  static $tmpp = "";

  if ($path=="" && !$tmpp){

  $tmpp = $dir;

  }

  $d = dir($dir);

  $files = array();

  if ($d)

  {

  $pathP=str_replace($tmpp,"",$dir);

  $pathP=str_replace(array("\\\\","/"),DIRECTORY_SEPARATOR,$pathP);

  $pathP=str_replace(DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR,$pathP);

  while($f = $d->read())

  {

  if ($f == '.' || $f=='..' || $f{0}=='.' || $f=='Zend' || in_array($f, $_GET['exclude']))continue;

  $newdir = rtrim($dir,"/")."/".$f;

  if (is_dir($newdir)){

  $files = array_merge($files,$this->GetFileList($newdir,$newdir));

  }else{

  $abspath_file = (rtrim($dir,"/") ? rtrim($dir,"/")."/" : "").$f;

  $this->fctimes[$abspath_file] = filemtime($abspath_file);

  if (!$this->getFileByFilectime($abspath_file))continue;

  $file = (rtrim($pathP,"/") ? rtrim($pathP,"/")."/" : "").$f;

  $files[] = $file;

  }

  }

  }

  return $files;

  }

  }

  /**

  * 仿寫CodeIgniter的FTP類

  * FTP基本操作:

  * 1) 登陸;     connect

  * 2) 當(dāng)前目錄文件列表; filelist

  * 3) 目錄改變;   chgdir

  * 4) 重命名/移動(dòng);   rename

  * 5) 創(chuàng)建文件夾;    mkdir

  * 6) 刪除;       delete_dir/delete_file

  * 7) 上傳;       upload

  * 8) 下載        download

  *

  * @author quanshuidingdang

  */

  class Ftp {

  private $hostname  = '';

  private $username  = '';

  private $password  = '';

  private $port  = 21;

  private $passive = TRUE;

  private $debug   = TRUE;

  private $conn_id = FALSE;

  /**

  * 構(gòu)造函數(shù)

  *

  * @param  array  配置數(shù)組 : $config = array('hostname'=>'','username'=>'','password'=>'','port'=>''...);

  */

  public function __construct($config = array()) {

  if(count($config) > 0) {

  $this->_init($config);

  }

  }

  /**

  * FTP連接

  *

  * @access public

  * @param  array  配置數(shù)組

  * @return boolean

  */

  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;

  }

  /**

  * 文件夾是否存在

  * @param unknown_type $path

  */

  public function is_dir_exists($path)

  {

  return $this->chgdir($path);

  }

  /**

  * 目錄改變

  *

  * @access public

  * @param  string 目錄標(biāo)識(shí)(ftp)

  * @param  boolean

  * @return boolean

  */

  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 目錄標(biāo)識(shí)(ftp)

  * @param  int  文件權(quán)限列表

  * @return boolean

  */

  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 本地目錄標(biāo)識(shí)

  * @param  string 遠(yuǎn)程目錄標(biāo)識(shí)(ftp)

  * @param  string 上傳模式 auto || ascii

  * @param  int  上傳后的文件權(quán)限列表

  * @return boolean

  */

  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 遠(yuǎn)程目錄標(biāo)識(shí)(ftp)

  * @param  string 本地目錄標(biāo)識(shí)

  * @param  string 下載模式 auto || ascii

  * @return boolean

  */

  public function download($remotepath, $localpath, $mode = 'auto') {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  if($mode == 'auto') {

  $ext = $this->_getext($remotepath);

  $mode = $this->_settype($ext);

  }

  $mode = ($mode == 'ascii') ? FTP_ASCII : FTP_BINARY;

  $result = @ftp_get($this->conn_id, $localpath, $remotepath, $mode);

  if($result === FALSE) {

  if($this->debug === TRUE) {

  $this->_error("ftp_unable_to_download:localpath[".$localpath."]-remotepath[".$remotepath."]");

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 重命名/移動(dòng)

  *

  * @access public

  * @param  string 遠(yuǎn)程目錄標(biāo)識(shí)(ftp)

  * @param  string 新目錄標(biāo)識(shí)

  * @param  boolean 判斷是重命名(FALSE)還是移動(dòng)(TRUE)

  * @return boolean

  */

  public function rename($oldname, $newname, $move = FALSE) {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  $result = @ftp_rename($this->conn_id, $oldname, $newname);

  if($result === FALSE) {

  if($this->debug === TRUE) {

  $msg = ($move == FALSE) ? "ftp_unable_to_rename" : "ftp_unable_to_move";

  $this->_error($msg);

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 刪除文件

  *

  * @access public

  * @param  string 文件標(biāo)識(shí)(ftp)

  * @return boolean

  */

  public function delete_file($file) {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  $result = @ftp_delete($this->conn_id, $file);

  if($result === FALSE) {

  if($this->debug === TRUE) {

  $this->_error("ftp_unable_to_delete_file:file[".$file."]");

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 刪除文件夾

  *

  * @access public

  * @param  string 目錄標(biāo)識(shí)(ftp)

  * @return boolean

  */

  public function delete_dir($path) {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  //對(duì)目錄宏的'/'字符添加反斜杠'\'

  $path = preg_replace("/(.+?)\/*$/", "\\1/", $path);

  //獲取目錄文件列表

  $filelist = $this->filelist($path);

  if($filelist !== FALSE AND count($filelist) > 0) {

  foreach($filelist as $item) {

  //如果我們無(wú)法刪除,那么就可能是一個(gè)文件夾

  //所以我們遞歸調(diào)用delete_dir()

  if( ! @delete_file($item)) {

  $this->delete_dir($item);

  }

  }

  }

  //刪除文件夾(空文件夾)

  $result = @ftp_rmdir($this->conn_id, $path);

  if($result === FALSE) {

  if($this->debug === TRUE) {

  $this->_error("ftp_unable_to_delete_dir:dir[".$path."]");

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 修改文件權(quán)限

  *

  * @access public

  * @param  string 目錄標(biāo)識(shí)(ftp)

  * @return boolean

  */

  public function chmod($path, $perm) {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  //只有在PHP5中才定義了修改權(quán)限的函數(shù)(ftp)

  if( ! function_exists('ftp_chmod')) {

  if($this->debug === TRUE) {

  $this->_error("ftp_unable_to_chmod(function)");

  }

  return FALSE;

  }

  $result = @ftp_chmod($this->conn_id, $perm, $path);

  if($result === FALSE) {

  if($this->debug === TRUE) {

  $this->_error("ftp_unable_to_chmod:path[".$path."]-chmod[".$perm."]");

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 獲取目錄文件列表

  *

  * @access public

  * @param  string 目錄標(biāo)識(shí)(ftp)

  * @return array

  */

  public function filelist($path = '.') {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  return ftp_nlist($this->conn_id, $path);

  }

  /**

  * 關(guān)閉FTP

  *

  * @access public

  * @return boolean

  */

  public function close() {

  if( ! $this->_isconn()) {

  return FALSE;

  }

  return @ftp_close($this->conn_id);

  }

  /**

  * FTP成員變量初始化

  *

  * @access private

  * @param  array  配置數(shù)組

  * @return void

  */

  private function _init($config = array()) {

  foreach($config as $key => $val) {

  if(isset($this->$key)) {

  $this->$key = $val;

  }

  }

  //特殊字符過(guò)濾

  $this->hostname = preg_replace('|.+?://|','',$this->hostname);

  }

  /**

  * FTP登陸

  *

  * @access private

  * @return boolean

  */

  private function _login() {

  return @ftp_login($this->conn_id, $this->username, $this->password);

  }

  /**

  * 判斷con_id

  *

  * @access private

  * @return boolean

  */

  private function _isconn() {

  if( ! is_resource($this->conn_id)) {

  if($this->debug === TRUE) {

  $this->_error("ftp_no_connection");

  }

  return FALSE;

  }

  return TRUE;

  }

  /**

  * 從文件名中獲取后綴擴(kuò)展

  *

  * @access private

  * @param  string 目錄標(biāo)識(shí)

  * @return string

  */

  private function _getext($filename) {

  if(FALSE === strpos($filename, '.')) {

  return 'txt';

  }

  $extarr = explode('.', $filename);

  return end($extarr);

  }

  /**

  * 從后綴擴(kuò)展定義FTP傳輸模式 ascii 或 binary

  *

  * @access private

  * @param  string 后綴擴(kuò)展

  * @return string

  */

  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';

  }

  /**

  * 錯(cuò)誤日志記錄

  *

  * @access prvate

  * @return boolean

  */

  private function _error($msg) {

  return @file_put_contents('/tmp/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*/

【php實(shí)現(xiàn)通過(guò)ftp上傳文件】相關(guān)文章:

jQuery Mobile + PHP實(shí)現(xiàn)文件上傳10-20

PHP實(shí)現(xiàn)大文件上傳源代碼10-21

用PHP實(shí)現(xiàn)文件上傳二法09-10

php使用ftp函數(shù)實(shí)現(xiàn)簡(jiǎn)單上傳功能10-31

PHP文件上傳源碼分析10-13

php使用html5實(shí)現(xiàn)多文件上傳實(shí)例09-04

如何判斷PHP文件上傳file是否已選擇上傳文件11-01

PHP從FTP服務(wù)器上下載文件的方法10-08

PHP中讀取大文件實(shí)現(xiàn)方法08-26

php環(huán)境上傳大文件需要注意哪些問(wèn)題08-04

主站蜘蛛池模板: 阜宁县| 南岸区| 长岭县| 浑源县| 阿拉善左旗| 西平县| 娱乐| 五原县| 茌平县| 宁明县| 罗甸县| 石阡县| SHOW| 垣曲县| 常州市| 新干县| 凤台县| 海伦市| 合川市| 绥宁县| 青岛市| 合阳县| 清新县| 平和县| 梨树县| 星座| 卫辉市| 桐庐县| 平定县| 石门县| 铁力市| 甘肃省| 辰溪县| 溧阳市| 大足县| 固阳县| 开阳县| 延安市| 察隅县| 新干县| 清新县|