Honesty Rocks! truth rules.

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

HOME      >>       Programming

vainsoft

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.


OpaQue

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


iGuest

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

 


iGuest

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.