国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP文件上傳實(shí)現(xiàn)上傳到另一臺服務(wù)器

2024-09-04 11:44:53
字體:
供稿:網(wǎng)友

在php中我們?nèi)绻蟼鞯搅硪慌_服務(wù)器就需要利用php一個ftp功能,在php中提供了 ftp_connect來連接服務(wù)器,然后把我們上傳的數(shù)據(jù)傳到遠(yuǎn)程服務(wù)器.

ftp_connect() 函數(shù)建立一個新的 FTP 連接,若成功,則返回一個連接標(biāo)識,否則返回 false.

語法:ftp_connect(host,port,timeout)

host 必需,規(guī)定要連接的 FTP 服務(wù)器,可以是域名或 IP 地址,后面不應(yīng)以斜線結(jié)尾,前面也不需要用 ftp:// 開頭.

port 可選,規(guī)定 FTP 服務(wù)器的端口.

timeout 可選,規(guī)定該 FTP 服務(wù)器的超時時間,默認(rèn)是 90 秒.

然后在臺式機(jī)本地做了個測試,代碼如下:

  1. $ftp_server = "192.168.1.100"
  2. $ftp_user_name = "laohu"
  3. $ftp_user_pass = "123456"
  4. $conn_id = ftp_connect($ftp_serveror die("Couldn't connect to $ftp_server"); 
  5. $file = 'test.txt'
  6. $remote_file = '/test/a.txt';   
  7. // 注意:這里的"/test"指的是ftp根目錄下的test文件夾,而非系統(tǒng)跟目錄下的 test 
  8. $login_result = ftp_login($conn_id$ftp_user_name$ftp_user_pass); 
  9. if (ftp_put($conn_id$remote_file$file, FTP_BINARY)) { 
  10.   echo "文件移動成功"
  11. else { 
  12.   echo "移動失敗"
  13. ftp_close($conn_id); 

運(yùn)行后,文件移動成功.

要的就是這個效果了,之后用臺式機(jī)做程序服務(wù)器,上傳附件時全用ftp方法上傳至筆記本上,筆記本ip是105,相應(yīng)代碼如下:

  1. if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) { 
  2.   $ftp_server = "192.168.1.105"
  3.   $ftp_user_name = "lesley"
  4.   $ftp_user_pass = "123456"
  5.   $conn_id = ftp_connect($ftp_serveror die("Couldn't connect to $ftp_server"); 
  6.   $file = $_FILES['uploadfile']['tmp_name']; 
  7.   $remote_file = '/test/'.$_FILES['uploadfile']['name']; 
  8.   $login_result = ftp_login($conn_id$ftp_user_name$ftp_user_pass); 
  9.  
  10.   if (ftp_put($conn_id$remote_file$file, FTP_BINARY)) { 
  11.     echo "文件:".$_FILES['uploadfile']['name']."上傳成功"
  12.   } else { 
  13.     echo "上傳失敗"
  14.   } 
  15.   ftp_close($conn_id); 

對應(yīng)的前臺頁面代碼如下:

  1. <form action="uploadfile.php" method="post" enctype="multipart/form-data"> 
  2.   <input type="file" name="uploadfile" id="uploadfile" /> 
  3.   <input type="submit" name="submit" value="submit" /> 
  4. </form> 

運(yùn)行后確實(shí)成功,下面看一個ftp文件上傳類,代碼如下:

  1. <?php   
  2. /**  
  3. * desc:FTP類 
  4. * link:www.survivalescaperooms.com 
  5. * date:2013/02/24  
  6. */   
  7. class ftp   
  8. {   
  9. public $off;  // 返回操作狀態(tài)(成功/失敗)   
  10. public $conn_id;  // FTP連接   
  11.    
  12. /**  
  13. * 方法:FTP連接  
  14. * @FTP_HOST -- FTP主機(jī)  
  15. * @FTP_PORT -- 端口  
  16. * @FTP_USER -- 用戶名  
  17. * @FTP_PASS -- 密碼  
  18. */   
  19. function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)   
  20. {   
  21. $this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORTor die("FTP服務(wù)器連接失敗");   
  22. @ftp_login($this->conn_id,$FTP_USER,$FTP_PASSor die("FTP服務(wù)器登陸失敗");  
  23. @ftp_pasv($this->conn_id,1); // 打開被動模擬   
  24. }   
  25.    
  26. /**  
  27. * 方法:上傳文件  
  28. * @path-- 本地路徑  
  29. * @newpath -- 上傳路徑  
  30. * @type-- 若目標(biāo)目錄不存在則新建  
  31. */   
  32. function up_file($path,$newpath,$type=true)   
  33. {   
  34. if($type$this->dir_mkdirs($newpath);   
  35. $this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY);   
  36. if(!$this->off) echo "文件上傳失敗,請檢查權(quán)限及路徑是否正確!";   
  37. }   
  38.    
  39. /**  
  40. * 方法:移動文件  
  41. * @path-- 原路徑  
  42. * @newpath -- 新路徑  
  43. * @type-- 若目標(biāo)目錄不存在則新建  
  44. */   
  45. function move_file($path,$newpath,$type=true)   
  46. {   
  47. if($type$this->dir_mkdirs($newpath);   
  48. $this->off = @ftp_rename($this->conn_id,$path,$newpath);   
  49. if(!$this->off) echo "文件移動失敗,請檢查權(quán)限及原路徑是否正確!";   
  50. }   
  51.    
  52. /**  
  53. * 方法:復(fù)制文件  
  54. * 說明:由于FTP無復(fù)制命令,本方法變通操作為:下載后再上傳到新的路徑  
  55. * @path-- 原路徑  
  56. * @newpath -- 新路徑  
  57. * @type-- 若目標(biāo)目錄不存在則新建  
  58. */   
  59. function copy_file($path,$newpath,$type=true)   
  60. {   
  61. $downpath = "c:/tmp.dat";   
  62. $this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下載   
  63. if(!$this->off) echo "文件復(fù)制失敗,請檢查權(quán)限及原路徑是否正確!";   
  64. $this->up_file($downpath,$newpath,$type);   
  65. }   
  66.    
  67. /**  
  68. * 方法:刪除文件  
  69. * @path -- 路徑  
  70. */   
  71. function del_file($path)   
  72. {   
  73. $this->off = @ftp_delete($this->conn_id,$path);   
  74. if(!$this->off) echo "文件刪除失敗,請檢查權(quán)限及路徑是否正確!";   
  75. }   
  76.    
  77. /**  
  78. * 方法:生成目錄  
  79. * @path -- 路徑  
  80. */   
  81. function dir_mkdirs($path)   
  82. {   
  83. $path_arr  = explode('/',$path);  // 取目錄數(shù)組   
  84. $file_name = array_pop($path_arr);// 彈出文件名   
  85. $path_div  = count($path_arr);// 取層數(shù)   
  86.    
  87. foreach($path_arr as $val)// 創(chuàng)建目錄   
  88. {   
  89. if(@ftp_chdir($this->conn_id,$val) == FALSE)   
  90. {   
  91. $tmp = @ftp_mkdir($this->conn_id,$val);   
  92. if($tmp == FALSE)   
  93. {   
  94. echo "目錄創(chuàng)建失敗,請檢查權(quán)限及路徑是否正確!";   
  95. exit;   
  96. }   
  97. @ftp_chdir($this->conn_id,$val);   
  98. }   
  99. }   
  100.    
  101. for($i=1;$i<=$path_div;$i++)  // 回退到根   
  102. {   
  103. @ftp_cdup($this->conn_id);   
  104. }   
  105. }   
  106.    
  107. /**  
  108. * 方法:關(guān)閉FTP連接  
  109. */   
  110. function close()   
  111. {   
  112. @ftp_close($this->conn_id);   
  113. }   
  114. }   
  115. // class class_ftp end  
  116. ?> 

調(diào)用代碼,代碼如下:

  1. <? 
  2. /*** 
  3. * desc:調(diào)用示例 
  4. * link:www.survivalescaperooms.com 
  5. * date:2013/2/24 
  6. */ 
  7. $ftp = new ftp('192.168.0.249',21,'hlj','123456');  // 打開FTP連接  
  8. $ftp->up_file('aa.wav','test/13548957217/bb.wav'); // 上傳文件  
  9. //$ftp->move_file('aaa/aaa.php','aaa.php');// 移動文件  
  10. //$ftp->copy_file('aaa.php','aaa/aaa.php');// 復(fù)制文件  
  11. //$ftp->del_file('aaa.php');   // 刪除文件  
  12. $ftp->close(); // 關(guān)閉FTP連接  
  13. ?> 

需要注意,在用ftp_put方法時,第四個參數(shù)傳送模式,需要用FTP_BINARY(二進(jìn)制模式),用FTP_ASCII(文本模式)時,圖片能上傳但無法顯示,其他文件重命名、中文亂碼解決、上傳權(quán)限控制等,就不在此提及了.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆德县| 营山县| 泰安市| 巴塘县| 黄山市| 林西县| 漠河县| 库车县| 嘉祥县| 六枝特区| 榆林市| 广东省| 徐闻县| 东平县| 聂拉木县| 辽宁省| 潮安县| 镇康县| 巴彦淖尔市| 大厂| 同仁县| 普洱| 改则县| 通道| 台山市| 衡东县| 新昌县| 榆社县| 加查县| 信阳市| 锡林郭勒盟| 大安市| 万山特区| 北碚区| 海门市| 屏东市| 灵寿县| 肃北| 天全县| 通州市| 巴青县|