Jump to content
xisto Community
Sign in to follow this  
vainsoft

Php Ftp Upload Form Adding User Directory to PHP Upload Form - Help

Recommended Posts

Alright I am trying to have a PHP FTP Upload Form that allows the user to create the directory folder for where they want to upload there files to. example:Main Directory: vainsoft.comThere directory: vainsoft.com/modeling or vainsoft.com/photographyBut I dont want them to be able to upload things into the main directory, only sub-directories, is that possible with this coding that I have:

<?//uses $_FILES[] global array//see manual for older PHP version info//This function will be used to get the extension from the filenamefunction 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//also some have to be set in the ini//for this to correctly work//2meg maxini_set("upload_max_filesize","100M");//turn on file uploadsini_set("file_uploads","1");//set your temp dirini_set("upload_tmp_dir","/tmp");//set post size large enough to accomidate//3 100meg files and some overheadini_set("post_max_size","180M");?><html><head>  <title>VainSoft - Upload Form</title></head><body><?//check to see if we have submited yetif($_POST["submit"]!="submit"){//not yet so lets make the form?><p>Upload Images here, 10 images at a time, hit back after upload to upload more. (100M 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><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><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="1000000000"><input type="submit" value="submit" name="submit"></form></p><?}//see if we have submited and that the files array has been setif(($_POST["submit"]=="submit")&&(is_array($_FILES['userfiles']))){$ftp_user_name="******"; //change to ftp username$ftp_user_pass="******"; //change to ftp password$ftp_server="******"; //change to ftp url$ftp_dump_dir="******"; //change to destination directory//go through all the filesfor($x=0;$x<count($_FILES['userfiles']['name']);$x++){  //now we do some file checking  //check to see if file is 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 = $_FILES['userfiles']['name'][$x];                  //$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 directory\n";                }                  //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>

Any help with this will be grateful.

Share this post


Link to post
Share on other sites

I think I can help here but I'm not sure first take out all your html.

<html><head><title>VainSoft - Upload Form</title></head><body><p>Upload Images here, 10 images at a time, hit back after upload to upload more. (100M MAX)</p><p><form name="fileup" method="post" enctype="multipart/form-data" action="upload.Php"><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><input type="file" name="userfiles[]"><br><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="1000000000"><input type="submit" value="submit" name="submit"></form>
Save that as upload.Html

Then for the php add
<?//uses $_FILES[] global array//see manual for older PHP version info//This function will be used to get the extension from the filenameFunction 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//also some have to be set in the ini//for this to correctly work//2meg maxIni_set("upload_max_filesize","100M");//turn on file uploadsIni_set("file_uploads","1");//set your temp dirIni_set("upload_tmp_dir","/tmp");//set post size large enough to accomidate//3 100meg files and some overheadIni_set("post_max_size","180M");?></p><?//check to see if we have submited yetIf($_POST["submit"]!="submit"){//not yet so lets make the form?><?}//see if we have submited and that the files array has been setIf(($_POST["submit"]=="submit")&&(is_array($_FILES['userfiles']))){$ftp_user_name="*****"; //change to ftp username$ftp_user_pass="*****"; //change to ftp password$ftp_server="******"; //change to ftp url$ftp_dump_dir="/files"; //change to destination directory//go through all the filesFor($x=0;$x<count($_FILES['userfiles']['name']);$x++){//now we do some file checking//check to see if file is thereIf($_FILES['userfiles']['name'][$x]!="none"){//file has a name//check filesizeIf($_FILES['userfiles']['size'][$x]!=0){//file is larger than 0 bytes//Check to see if it is uploadedIf(is_uploaded_file($_FILES['userfiles']['tmp_name'][$x])){//file has been uploaded!//let the user know their file has be uploadedEcho "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 connectionIf ((!$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 modeIf(!ftp_pasv($conn_id,TRUE)){Echo "Could not enter PASV mode!";}//rename to file#_date.Ext$filename = $_FILES['userfiles']['name'][$x];//$filename.= ".".Get_extension($_FILES['userfiles']['name'][$x],3);//change directoryIf (@ftp_chdir($conn_id, $ftp_dump_dir)) {//maybe you want to make sure we are in the correct directoryEcho "Current directory is now : ", ftp_pwd($conn_id), "\and";} else {//you want to know if it didn't workEcho "Couldn't change directory\and";}//upload the file and let the user know what happenedIf(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 streamFtp_close($conn_id);}Else echo"File was not uploaded!<br>";}}Echo "<br>";}//end for loop}//That's all folks!?>
and save that as upload.Php (please note casing is important)

No when you log in to your ftp make sure that you CHMOD the directory to 777, this should help,

Connor

-reply by Connor

Posted at Xisto Feedback System

Share this post


Link to post
Share on other sites
THIS ROCKS FINALLY!!!!!Php Ftp Upload Form

I finally was able to find something that would work for to upload files for all my users...Eventually I will have my plugin do all this work for me. So thank you so much for making this known, this rocks...

 

-reply by Thomas Norberg

 

Share this post


Link to post
Share on other sites

Thank you very much for this script. Works well.Wanted to know if there is a way to get an e mail once files been updated.Thank you very much in advance.Please Advice.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.