#native_company# #native_desc#
#native_cta#

FTP File Upload

By Maxstropholis
on June 4, 2004

Version: 1.0

Type: Full Script

Category: File Management

License: GNU General Public License

Description: This simple script takes user files from a form and uploads them to an FTP site with a friendly name. Uses the PHP FTP functions. Also has some error checking.

<? 
//uses $_FILES[] global array 
//see manual for older PHP version info 

//This function will be used to get the extension from the filename 
function get_extension($file,$length=-1){ 
$p = strrpos($file,"."); 
$p++; 
if($length!=-1){ 
  $ext = substr($file,$p,$length); 
} 
if($length==-1){ 
  $ext = substr($file,$p); 
} 
$ext = strtolower($ext); 
return $ext; 
} 

//Not good practice, but here anyway 
//change to suit your needs 

//2meg max 
ini_set("upload_max_filesize","2M"); 

//turn on file uploads 
ini_set("file_uploads","1"); 

//set your temp dir 
ini_set("upload_tmp_dir","/tmp"); 

//set post size large enough to accomidate 
//3 2meg files and some overhead 
ini_set("post_max_size","8M"); 

?> 
<html> 
<head> 
  <title>ftp connect and upload</title> 
</head> 
<body> 
<? 
//check to see if we have submited yet 
if($_POST["submit"]!="submit"){ 
//not yet so lets make the form 
?> 
<p>Upload Files to ftp site (2M MAX)</p> 
<p> 
<form name="fileup" method="post" enctype="multipart/form-data" action="<? echo $PHP_SELF; ?>"> 
<input type="file" name="userfiles[]"><br> 
<input type="file" name="userfiles[]"><br> 
<input type="file" name="userfiles[]"><br> 
<br> 
<!-- change below to your max --> 
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
<input type="submit" value="submit" name="submit"> 
</form> 
</p> 
<? 
} 
//see if we have submited and that the files array has been set 
if(($_POST["submit"]=="submit")&&(is_array($_FILES['userfiles']))){ 

$ftp_user_name="ftpuser"; //change to ftp username 
$ftp_user_pass="ftppass"; //change to ftp password 
$ftp_server="yoursitehere.com"; //change to ftp url 
$ftp_dump_dir="/destination"; //change to destination directory 

//go through all the files 
for($x=0;$x<count($_FILES['userfiles']['name']);$x++){ 

  //now we do some file checking 

  //check to see if file it there 
  if($_FILES['userfiles']['name'][$x]!="none"){ 
  //file has a name 
  //check filesize 
      if($_FILES['userfiles']['size'][$x]!=0){ 
        //file is larger than 0 bytes 
          //Check to see if it is uploaded 
          if(is_uploaded_file($_FILES['userfiles']['tmp_name'][$x])){ 
               //file has been uploaded! 
             //let the user know their file has be uploaded 
             echo "file ".$_FILES['userfiles']['name'][$x]." uploaded!<br>"; 
             //conect to ftp server 
             $conn_id = ftp_connect($ftp_server); 
            // login with username and password 
              $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
            // check connection 
             if ((!$conn_id) || (!$login_result)) { 
              echo "FTP connection has failed!<br>"; 
              echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
              exit; 
            } else { 
                 echo "Connected to $ftp_server! <br>"; 
                 //set PASV mode 
                 if(!ftp_pasv($conn_id,TRUE)){ 
                     echo "Could not enter PASV mode!"; 
                 } 
                 //rename to file#_date.ext 
                 $filename = "file".($x+1)."_".date("MdY"); 
                 $filename.= ".".get_extension($_FILES['userfiles']['name'][$x],3); 

                 //change directory 
                 if (@ftp_chdir($conn_id, $ftp_dump_dir)) { 
                     //maybe you want to make sure we are in the correct directory 
                    echo "Current directory is now : ", ftp_pwd($conn_id), "n"; 
                } else { 
                  //you want to know if it didn't work 
                  echo "Couldn't change directoryn"; 
                } 

                  //upload the file and let the user know what happened 
                if(ftp_put($conn_id,$filename,$_FILES['userfiles']['tmp_name'][$x],FTP_BINARY)){ 
                       echo "File ".$_FILES['userfiles']['name'][$x]." was sent successfully<br>"; 
                    echo "File was named ".$filename."<br>"; 
                }else{ 
                       echo "There was a problem sending file ".$_FILES['userfiles']['name'][$x]."<br>";; 
                         } 
                } 
                // close the FTP stream 
                ftp_close($conn_id); 
            } 
            else echo"File was not uploaded!<br>"; 
        } 
    } 
    echo "<br>"; 

}//end for loop 

} 
//That's all folks! 
?> 
</body> 
</html>