本篇教程是一款关于用php写 ftp文件上传函数教程,php功能很强大,可以用他自身带的函数来实例ftp的功能,实现文件上传功能,代码如下:
- <?php
- function phpftp_top() {
- echo "<!-- function phpftp_top --> ";
- echo "<html> ";
- echo "<head> ";
- echo "<title>PHP FTP Client v1.4</title> ";
- echo "</head> ";
- echo "<body bgcolor="#ffffff"> ";
- echo "<font face="courier"> ";
- }
-
- function phpftp_bottom() {
- echo " <!-- function phpftp_bottom --> ";
- echo "</font> ";
- echo "</body> ";
- echo "</html> ";
- }
-
- function phpftp_login() {
- phpftp_top();
- echo "<!-- function phpftp_login --> ";
- echo "<p> ";
- echo "<form action="ftp.php3" method=post> ";
- echo "Login: ";
- echo "<input name="phpftp_user" type="text"> ";
- echo "<p> ";
- echo "Password: ";
- echo "<input name="phpftp_passwd" type="password"> ";
- echo "<p> ";
- echo "Directory: ";
- echo "<input name="phpftp_dir" type="text"> ";
- echo "<p> ";
- echo "<input type="hidden" name="function" value="dir"> ";
- echo "<input type="submit" value="connect"> ";
- echo "</form> ";
- echo "<p> ";
- phpftp_bottom();
- }
-
-
-
-
- function phpftp_connect( $phpftp_user, $phpftp_passwd ) {
- $phpftp_host="localhost";
- $ftp = ftp_connect( $phpftp_host );
- if ( $ftp ) {
- if ( ftp_login( $ftp, $phpftp_user, $phpftp_passwd ) ) {
- return $ftp;
- }
- }
- }
-
- function phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ) {
- phpftp_top();
- echo "<!-- function phpftp_list --> ";
- $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );
- if ( ! $ftp ) {
- echo "<strong>FTP login failed!</strong> ";
- echo "<a href="ftp.php3">Start over?</a> ";
- phpftp_bottom();
- } else {
- if ( ! $phpftp_dir ) {
- $phpftp_dir=ftp_pwd( $ftp );
- }
- if ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) {
- echo "<font color="#ff0000"><strong>Can't enter that directory!</strong></font><p><p> ";
- $phpftp_dir=ftp_pwd( $ftp );
- }
- echo "<strong>Current directory:</strong> " . $phpftp_dir . "
- ";
- if ( $phpftp_dir == "/" ) {
- $phpftp_dir="";
- }
- echo "<table border=0 cellspacing=20> ";
- if ( $contents = ftp_nlist( $ftp, "." ) ) {
- $d_i=0;
- $f_i=0;
- sort($contents);
- for ( $i=0; $i < count( $contents ); $i++ ) {
- $file_size = ftp_size( $ftp, $contents[$i] );
- if ( $file_size == -1 ) {
- $nlist_dirs[$d_i]=$contents[$i];
- $d_i++;
- } else {
- $nlist_files[$f_i]=$contents[$i];
- $nlist_filesize[$f_i]=$file_size;
- $f_i++;
- }
- }
- echo "<tr><td> ";
- echo "<font face="courier"><strong>Directories</strong></font>
- ";
- echo "<form action="ftp.php3" method=post> ";
- echo "<input type="hidden" name="function" value="cd"> ";
- echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";
- echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";
- echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";
- echo "<select name="select_directory" size="10" width="100"> ";
- for ( $i=0; $i < count( $nlist_dirs ); $i++ ) {
- echo "<option value="" . $nlist_dirs[$i] . "">" . $nlist_dirs[$i] . "</option> ";
- }
- echo "</select>
- ";
- echo "<input type="submit" value="Enter Directory"> ";
- echo "</form> ";
- echo "</td><td> ";
- echo "<font face="courier"><strong>Files</strong></font>
- ";
- echo "<form action="ftp.php3" method=post> ";
- echo "<input type="hidden" name="function" value="get"> ";
- echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";
- echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";
- echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";
- echo "<select name="select_file" size="10"> ";
- for ( $i=0; $i < count( $nlist_files ); $i++ ) {
- echo "<option value="" . $nlist_files[$i] . "">" . $nlist_files[$i] ." ($nlist_filesize[$i] bytes)". "</option> ";
- }
- echo "</select>
- ";
- echo "<input type="submit" value="Download File"> ";
- echo "</form> ";
- echo "</td></tr> ";
- } else {
- echo "<p><font color="#ff0000"><strong>Directory empty or not readable</strong></font><p> ";
- }
- echo "</table> ";
- echo "<p> ";
- echo "<form action="ftp.php3" method=post> ";
- $cdup=dirname( $phpftp_dir );
- if ( $cdup == "" ) {
- $cdup="/";
- }
- echo "<input type="hidden" name="function" value="dir"> ";
- echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";
- echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";
- echo "<input type="hidden" name="phpftp_dir" value="" . $cdup . ""> ";
- echo "<input type="submit" value="Go up one directory"> ";
- echo "</form> ";
- echo "<p> ";
- echo "<form enctype="multipart/form-data" action="ftp.php3" method=post> ";
- echo "<input type="hidden" name="max_file_size" value="1000000"> ";
- echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";
- echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";
- echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";
- echo "<input type="hidden" name="function" value="put"> ";
- echo "<input type="submit" value="Upload this:"> ";
- echo "<input name="userfile" type="file"> ";
- echo "</form> ";
- echo "<p> ";
- echo "<form action="ftp.php3" method=post> ";
- echo "<input type="hidden" name="function" value="mkdir"> ";
- echo "<input type="hidden" name="phpftp_user" value="" . $phpftp_user . ""> ";
- echo "<input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd . ""> ";
- echo "<input type="hidden" name="phpftp_dir" value="" . $phpftp_dir . ""> ";
- echo "<input type="submit" value="Make subdirectory:"> ";
- echo "<input name="new_dir" type="text"> ";
- ftp_quit( $ftp );
- phpftp_bottom();
- }
- }
-
- function phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory ) {
- echo "<!-- function phpftp_cd --> ";
- $new_directory=$phpftp_dir . "/" . $select_directory;
- phpftp_list( $phpftp_user, $phpftp_passwd, $new_directory );
- }
-
- function phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir ) {
- echo "<!-- function phpftp_mkdir --> ";
- $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );
- if ( $phpftp_dir == "" ) {
- $phpftp_dir="/";
- }
- if ( ! $ftp ) {
- @ftp_quit( $ftp );
- phpftp_top();
- echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> ";
- echo "<a href="ftp.php3">Start over?</a> ";
- phpftp_bottom();
- } else {
- $dir_path = $phpftp_dir . "/" . $new_dir;
- @ftp_mkdir( $ftp, $dir_path );
- @ftp_quit( $ftp );
- phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );
- }
- };
-
-
- function phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file ) {
- $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd );
- if ( $phpftp_dir == "" ) {
- $phpftp_dir="/";
- }
- if ( ( ! $ftp ) || ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) ) {
- @ftp_quit( $ftp );
- phpftp_top();
- echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> ";
- echo "<a href="ftp.php3">Start over?</a> ";
- phpftp_bottom();
- } else {
- srand((double)microtime()*1000000);
- $randval = rand();
- $tmpfile="/var/tmp/xfers/" . $select_file . "." . $randval;
- if ( ! ftp_get( $ftp, $tmpfile, $select_file, FTP_BINARY ) ) {
- ftp_quit( $ftp );
- phpftp_top();
- echo "<font color="#ff0000"><strong>FTP get failed!</strong></font><p><p> <a href="ftp.php3">Start over?</a> ";
- phpftp_bottom();
- } else {
- ftp_quit( $ftp );
- header( "Content-Type: application/octet-stream" );
- header( "Content-Disposition: attachment; filename=" . $select_file );
- readfile( $tmpfile );
- }
- @unlink( $tmpfile );
- }
- }
-
- function phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ) {
- srand((double)microtime()*1000000);
- $randval = rand();
- $tmpfile="/var/tmp/xfers/" . $userfile_name . "." . $randval;
- if ( ! @copy( $userfile, $tmpfile ) ) {
- phpftp_top();
- 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> ";
- phpftp_bottom();
- } else {
- if ( ! $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ) ) {
- unlink( $tmpfile );
- phpftp_top();
- echo "<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p> <a href="ftp.php3">Start over?</a> ";
- phpftp_bottom();
- } else {
- ftp_put( $ftp, $userfile_name, $tmpfile, FTP_BINARY );
- ftp_quit( $ftp );
- unlink( $tmpfile );
- phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );
- }
- }
- }
-
- switch( $function ) {
- case "dir";
- phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir );
- break;
- case "cd";
- phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory );
- break;
- case "get";
- phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file );
- break;
- case "put";
- phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name );
- break;
- case "mkdir";
- phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir );
- break;
- case "";
- phpftp_login();
- break;
- }
-
- ?>
|