当前位置:首页 > PHP教程 > php函数 > 列表

用php写 ftp文件上传函数教程

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-09 16:11:58 浏览: 评论:0 

本篇教程是一款关于用php写 ftp文件上传函数教程,php功能很强大,可以用他自身带的函数来实例ftp的功能,实现文件上传功能,代码如下:

  1. <?php 
  2. function phpftp_top() {  
  3. echo "<!-- function phpftp_top --> ";  
  4. echo "<html> ";  
  5. echo "<head> ";  
  6. echo "<title>PHP FTP Client v1.4</title> ";  
  7. echo "</head> ";  
  8. echo "<body bgcolor="#ffffff"> ";  
  9. echo "<font face="courier"> ";  
  10. } 
  11.  
  12. function phpftp_bottom() {  
  13. echo " <!-- function phpftp_bottom --> ";  
  14. echo "</font> ";  
  15. echo "</body> ";  
  16. echo "</html> ";  
  17. } 
  18.  
  19. function phpftp_login() {  
  20. phpftp_top();  
  21. echo "<!-- function phpftp_login --> ";  
  22. echo "<p> ";  
  23. echo "<form action="ftp.php3" method=post> ";  
  24. echo "Login:     ";  
  25. echo "<input name="phpftp_user" type="text"> ";  
  26. echo "<p> ";  
  27. echo "Password:  ";  
  28. echo "<input name="phpftp_passwd" type="password"> ";  
  29. echo "<p> ";  
  30. echo "Directory: ";  
  31. echo "<input name="phpftp_dir" type="text"> ";  
  32. echo "<p> ";  
  33. echo "<input type="hidden" name="function" value="dir"> ";  
  34. echo "<input type="submit" value="connect"> ";  
  35. echo "</form> ";  
  36. echo "<p> ";  
  37. phpftp_bottom();  
  38. } 
  39.  
  40. /* This function does not return TRUE/FALSE - it returns the value of  
  41. $ftp, the current FTP stream. */ 
  42.  
  43. function phpftp_connect( $phpftp_user, $phpftp_passwd ) {  
  44. $phpftp_host="localhost";  
  45. $ftp = ftp_connect( $phpftp_host );  
  46. if ( $ftp ) {  
  47. if ( ftp_login( $ftp, $phpftp_user, $phpftp_passwd ) ) {  
  48. return $ftp;  
  49. }  
  50. }  
  51. } 
  52.  
  53. function phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ) {  
  54. phpftp_top();  
  55. echo "<!-- function phpftp_list --> ";  
  56. $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );  
  57. if ( ! $ftp ) {  
  58. echo "<strong>FTP login failed!</strong> ";  
  59. echo "<a href="ftp.php3">Start over?</a> ";  
  60. phpftp_bottom();  
  61. } else {  
  62. if ( ! $phpftp_dir ) {  
  63. $phpftp_dir=ftp_pwd( $ftp );  
  64. }  
  65. if ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) {  
  66. echo "<font color="#ff0000"><strong>Can't enter that directory!</strong></font><p><p> ";  
  67. $phpftp_dir=ftp_pwd( $ftp );  
  68. }  
  69. echo "<strong>Current directory:</strong> " . $phpftp_dir . " 
  70. ";  
  71. if ( $phpftp_dir == "/" ) {  
  72. $phpftp_dir="";  
  73. }  
  74. echo "<table border=0 cellspacing=20> ";  
  75. if ( $contents = ftp_nlist( $ftp, "." ) ) {  
  76. $d_i=0;  
  77. $f_i=0;  
  78. sort($contents);  
  79. for ( $i=0; $i < count( $contents ); $i++ ) {  
  80. $file_size = ftp_size( $ftp, $contents[$i] );  
  81. if ( $file_size == -1 ) {  
  82. $nlist_dirs[$d_i]=$contents[$i];  
  83. $d_i++;  
  84. } else {  
  85. $nlist_files[$f_i]=$contents[$i];  
  86. $nlist_filesize[$f_i]=$file_size;  
  87. $f_i++;  
  88. }  
  89. }  
  90. echo "<tr><td> ";  
  91. echo "<font face="courier"><strong>Directories</strong></font> 
  92. ";  
  93. echo "<form action="ftp.php3" method=post> ";  
  94. echo "<input type="hidden" name="function" value="cd"> ";  
  95. echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";  
  96. echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";  
  97. echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";  
  98. echo "<select name="select_directory" size="10" width="100"> ";  
  99. for ( $i=0; $i < count( $nlist_dirs ); $i++ ) {  
  100. echo "<option value="" . $nlist_dirs[$i] . "">" . $nlist_dirs[$i] . "</option> ";  
  101. }  
  102. echo "</select> 
  103. ";  
  104. echo "<input type="submit" value="Enter Directory"> ";  
  105. echo "</form> ";  
  106. echo "</td><td> ";  
  107. echo "<font face="courier"><strong>Files</strong></font> 
  108. ";  
  109. echo "<form action="ftp.php3" method=post> ";  
  110. echo "<input type="hidden" name="function" value="get"> ";  
  111. echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";  
  112. echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";  
  113. echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";  
  114. echo "<select name="select_file" size="10"> ";  
  115. for ( $i=0; $i < count( $nlist_files ); $i++ ) {  
  116. echo "<option value="" . $nlist_files[$i] . "">" . $nlist_files[$i] ." ($nlist_filesize[$i] bytes)". "</option> ";  
  117. }  
  118. echo "</select> 
  119. ";  
  120. echo "<input type="submit" value="Download File"> ";  
  121. echo "</form> ";  
  122. echo "</td></tr> ";  
  123. } else {  
  124. echo "<p><font color="#ff0000"><strong>Directory empty or not readable</strong></font><p> ";  
  125. }  
  126. echo "</table> ";  
  127. echo "<p> ";  
  128. echo "<form action="ftp.php3" method=post> ";  
  129. $cdup=dirname( $phpftp_dir );  
  130. if ( $cdup == "" ) {  
  131. $cdup="/";  
  132. }  
  133. echo "<input type="hidden" name="function" value="dir"> ";  
  134. echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";  
  135. echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";  
  136. echo "<input type="hidden" name="phpftp_dir" value="" . $cdup . ""> ";  
  137. echo "<input type="submit" value="Go up one directory"> ";  
  138. echo "</form> ";  
  139. echo "<p> ";  
  140. echo "<form enctype="multipart/form-data" action="ftp.php3" method=post> ";  
  141. echo "<input type="hidden" name="max_file_size" value="1000000"> ";  
  142. echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";  
  143. echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";  
  144. echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";  
  145. echo "<input type="hidden" name="function" value="put"> ";  
  146. echo "<input type="submit" value="Upload this:"> ";  
  147. echo "<input name="userfile" type="file"> ";  
  148. echo "</form> ";  
  149. echo "<p> ";  
  150. echo "<form action="ftp.php3" method=post> ";  
  151. echo "<input type="hidden" name="function" value="mkdir"> ";  
  152. echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";  
  153. echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";  
  154. echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";  
  155. echo "<input type="submit" value="Make subdirectory:"> ";  
  156. echo "<input name="new_dir" type="text"> ";  
  157. ftp_quit( $ftp );  
  158. phpftp_bottom();  
  159. }  
  160. } 
  161.  
  162. function phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory ) {  
  163. echo "<!-- function phpftp_cd --> ";  
  164. $new_directory=$phpftp_dir . "/" . $select_directory;  
  165. phpftp_list( $phpftp_user, $phpftp_passwd, $new_directory );  
  166. } 
  167.  
  168. function phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir ) {  
  169. echo "<!-- function phpftp_mkdir --> ";  
  170. $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );  
  171. if ( $phpftp_dir == "" ) {  
  172. $phpftp_dir="/";  
  173. }  
  174. if ( ! $ftp ) {  
  175. @ftp_quit( $ftp );  
  176. phpftp_top();  
  177. echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> ";  
  178. echo "<a href="ftp.php3">Start over?</a> ";  
  179. phpftp_bottom();  
  180. } else {  
  181. $dir_path = $phpftp_dir . "/" . $new_dir;  
  182. @ftp_mkdir( $ftp, $dir_path );  
  183. @ftp_quit( $ftp );  
  184. phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );  
  185. }  
  186. }; 
  187.  
  188.  
  189. function phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file ) {  
  190. $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );  
  191. if ( $phpftp_dir == "" ) {  
  192. $phpftp_dir="/";  
  193. }  
  194. if ( ( ! $ftp ) || ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) ) {  
  195. @ftp_quit( $ftp );  
  196. phpftp_top();  
  197. echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> ";  
  198. echo "<a href="ftp.php3">Start over?</a> ";  
  199. phpftp_bottom();  
  200. } else {  
  201. srand((double)microtime()*1000000);  
  202. $randval = rand();  
  203. $tmpfile="/var/tmp/xfers/" . $select_file . "." . $randval;  
  204. if ( ! ftp_get( $ftp, $tmpfile, $select_file, FTP_BINARY ) ) {  
  205. ftp_quit( $ftp );  
  206. phpftp_top();  
  207. echo "<font color="#ff0000"><strong>FTP get failed!</strong></font><p><p> <a href="ftp.php3">Start over?</a> ";  
  208. phpftp_bottom();  
  209. } else {  
  210. ftp_quit( $ftp );  
  211. header( "Content-Type: application/octet-stream" );  
  212. header( "Content-Disposition: attachment; filename=" . $select_file );  
  213. readfile( $tmpfile );  
  214. }  
  215. @unlink( $tmpfile );  
  216. }  
  217. } 
  218.  
  219. function phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ) {  
  220. srand((double)microtime()*1000000);  
  221. $randval = rand();  
  222. $tmpfile="/var/tmp/xfers/" . $userfile_name . "." . $randval;  
  223. if ( ! @copy( $userfile, $tmpfile ) ) {  
  224. phpftp_top();  
  225. echo "<font color="#ff0000"><strong>Upload failed! Probably no space on server for temp file.</strong></font><p><p> <a href="ftp.php3">Start over?</a> ";  
  226. phpftp_bottom();  
  227. } else {  
  228. if ( ! $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ) ) {  
  229. unlink( $tmpfile );  
  230. phpftp_top();  
  231. echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> <a href="ftp.php3">Start over?</a> ";  
  232. phpftp_bottom();  
  233. } else {  
  234. ftp_put( $ftp, $userfile_name, $tmpfile, FTP_BINARY );  
  235. ftp_quit( $ftp );  
  236. unlink( $tmpfile );  
  237. phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );  
  238. }  
  239. }  
  240. } 
  241.  
  242. switch( $function ) {  
  243. case "dir";  
  244. phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );  
  245. break;  
  246. case "cd";  
  247. phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory );  
  248. break;  
  249. case "get";  
  250. phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file );  
  251. break;  
  252. case "put";  
  253. phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ); //开源代码phpfensi.com 
  254. break;  
  255. case "mkdir";  
  256. phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir );  
  257. break;  
  258. case "";  
  259. phpftp_login();  
  260. break;  
  261. } 
  262.  
  263. ?> 

Tags: php函数ftp ftp文件上传

分享到: