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

Tags: php函数ftp ftp文件上传

分享到: