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>