Jump to content


Photo

Help! uploading function failure on a sftp server


  • Please log in to reply
5 replies to this topic

#1 fengyuboy

fengyuboy
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 02 September 2006 - 09:53 PM

//Function #10 (Upload The File With Validation)
function upload_file_with_validation() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $file_name = trim(strtolower($this->file_name)); 
    $upload_dir = $this->get_upload_directory(); 
    $upload_log_dir = $this->get_upload_log_directory(); 
    $file_size = $this->get_file_size(); 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $m = date("m"); 
    $d = date("d"); 
    $y = date("Y"); 
    $date = date("m/d/Y"); 
    $time = date("h:i:s A"); 
    $existing_file = $this->existing_file();    //<-Add On 
    $valid_user = $this->validate_user();        //<-Add On 
    $valid_size = $this->validate_size();        //<-Add On 
    $valid_ext = $this->validate_extension();    //<-Add On 

    //SECTION #2 
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) { 
	echo "upload directory failure or upload log directory failure";
        return false; 
    } 
    elseif ((((!$valid_user) OR (!$valid_size) OR (!$valid_ext) OR ($existing_file)))) { 
	echo "invalid user, invalid size, invalid extension, existing file";
        return false; 
    } else { 
        if (is_uploaded_file($temp_file_name)) { 
		echo $temp_file_name.$upload_dir. $file_name;
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) { 
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt"; 
                $fp = fopen($log,"a+"); 
                fwrite($fp," 
$ip-$cpu | $file_name | $file_size | $date | $time"); 
                fclose($fp); 
                return true; 
            } else { 
			echo "move file failure";
                return false; 
            } 
        } else { 
		echo "is not uploaded";
            return false; 
        } 
    } 
} 
}

$upload_class = new Upload_Files; 
$Name_test = trim($_FILES['upload']['tmp_name']);
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']); 
$upload_class->file_name = trim(strtolower($_FILES['upload']['name'])); 
$upload_class->upload_dir = "/info/www/docs/bios/uploads/"; 
$upload_class->upload_log_dir = "/info/www/docs/bios/uploads/upload_logs"; 
$upload_class->max_file_size = 512000; 
$upload_class->banned_array = array(""); 
$upload_class->ext_array = array(".jpg",".jpeg",".gif",".png");

Here is part of the code(from the file uploading class tutorial),
I tested this code on a sftp server, and the file could not be uploaded due to the move_uploaded_file() function fails. I guess there are some restrictions on the server. I have the login username and password, Is there anyway that I can put that in my code to enable file uploading?Just like a piece of code to enable uploading and downloading by logging in the sftp server.

Thanks!

#2 AndyB

AndyB
  • Staff Alumni
  • Advanced Member
  • 5,465 posts
  • LocationToronto

Posted 02 September 2006 - 09:56 PM

Are write pernissions correctly set for the target folder?
Legend has it that reading the manual never killed anyone.
My site

#3 fengyuboy

fengyuboy
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 02 September 2006 - 09:57 PM

Here is the full code, file uploading class of the PHP freak tutorial.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>imagevalidation</title>
</head>
<?php 
class Upload_Files 
{ 
    var $temp_file_name; 
    var $file_name; 
    var $upload_dir; 
    var $upload_log_dir; 
    var $max_file_size; 
    var $banned_array; 
    var $ext_array; 

//Function #1
function validate_extension() 
{ 
    //SECTION #1 
    $file_name = trim($this->file_name); 
    $extension = strtolower(strrchr($file_name,".")); 
    $ext_array = $this->ext_array; 
    $ext_count = count($ext_array); 
    //SECTION #2 
    if (!$file_name) { 
        return false; 
    } else { 
        if (!$ext_array) { 
            return true; 
        } else { 
            foreach ($ext_array as $value) { 
                $first_char = substr($value,0,1); 
                    if ($first_char <> ".") { 
                        $extensions[] = ".".strtolower($value); 
                    } else { 
                        $extensions[] = strtolower($value); 
                    } 
					
            } 

            //SECTION #3 
            foreach ($extensions as $value) { 
                if ($value == $extension) { 
                    $valid_extension = "TRUE"; 
                }                 
            } 

            //SECTION #4 
            if ($valid_extension) { 
                return true; 
            } else { 
                return false; 
            } 
        } 
    } 
} 
//Function #2
function validate_size()
{ 
    $temp_file_name = trim($this->temp_file_name); 
    $max_file_size = trim($this->max_file_size); 

    if ($temp_file_name) { 
        $size = filesize($temp_file_name); 
            if ($size > $max_file_size) { 
                return false;                                                         
            } else { 
                return true; 
            } 
    } else { 
        return false; 
    }     
} 
//Function #3
function existing_file() { 
    $file_name = trim($this->file_name); 
    $upload_dir = $this->get_upload_directory(); 

    if ($upload_dir == "ERROR") { 
        return true; 
    } else { 
        $file = $upload_dir . $file_name; 
        if (file_exists($file)) { 
            return true; 
        } else { 
            return false; 
        } 
    }     
} 
//Function #4
function get_file_size() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $kb = 1024; 
    $mb = 1024 * $kb; 
    $gb = 1024 * $mb; 
    $tb = 1024 * $gb; 

        //SECTION #2 
        if ($temp_file_name) { 
            $size = filesize($temp_file_name); 
            if ($size < $kb) { 
                $file_size = "$size Bytes"; 
            } 
            elseif ($size < $mb) { 
                $final = round($size/$kb,2); 
                $file_size = "$final KB"; 
            } 
            elseif ($size < $gb) { 
                $final = round($size/$mb,2); 
                $file_size = "$final MB"; 
            } 
            elseif($size < $tb) { 
                $final = round($size/$gb,2); 
                $file_size = "$final GB"; 
            } else { 
                $final = round($size/$tb,2); 
                $file_size = "$final TB"; 
            } 
        } else { 
            $file_size = "ERROR: NO FILE PASSED TO get_file_size()"; 
        } 
        return $file_size; 
} 
//Function #5
function get_max_size() { 
    $max_file_size = trim($this->max_file_size); 
    $kb = 1024; 
    $mb = 1024 * $kb; 
    $gb = 1024 * $mb; 
    $tb = 1024 * $gb; 

    if ($max_file_size) { 
        if ($max_file_size < $kb) { 
            $max_file_size = "max_file_size Bytes"; 
        } 
        elseif ($max_file_size < $mb) { 
            $final = round($max_file_size/$kb,2); 
            $max_file_size = "$final KB"; 
        } 
        elseif ($max_file_size < $gb) { 
            $final = round($max_file_size/$mb,2); 
            $max_file_size = "$final MB"; 
        } 
        elseif($max_file_size < $tb) { 
            $final = round($max_file_size/$gb,2); 
                $max_file_size = "$final GB"; 
        } else { 
            $final = round($max_file_size/$tb,2); 
            $max_file_size = "$final TB"; 
        } 
    } else { 
        $max_file_size = "ERROR: NO SIZE PARAMETER PASSED TO  get_max_size()"; 
    } 
        return $max_file_size; 
} 
//Function #6
function validate_user() { 
    //SECTION #1 
    $banned_array = $this->banned_array; 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $count = count($banned_array); 

    //SECTION #2 
    if ($count < 1) { 
        return true; 
    } else { 
        foreach($banned_array as $key => $value) { 
            if ($value == $ip ."-". $cpu) { 
                return false; 
            } else { 
                return true; 
            } 
        } 
    } 
} 
//Function #7
function get_upload_directory() { 
    //SECTION #1 
    $upload_dir = trim($this->upload_dir); 

    //SECTION #2 
    if ($upload_dir) { 
        $ud_len = strlen($upload_dir); 
        $last_slash = substr($upload_dir,$ud_len-1,1); 
            if ($last_slash <> "/") { 
                $upload_dir = $upload_dir."/"; 
            } else { 
                    $upload_dir = $upload_dir; 
            } 

        //SECTION #3 
        $handle = @opendir($upload_dir); 
            if ($handle) { 
                $upload_dir = $upload_dir; 
                closedir($handle); 
            } else { 
                $upload_dir = "ERROR"; 
				echo "open directory failure";
            } 
    } else { 
        $upload_dir = "ERROR"; 
    } 
    return $upload_dir; 
} 
//Function #8 (Verify The Upload Log Directory) 
function get_upload_log_directory() { 
    $upload_log_dir = trim($this->upload_log_dir); 
    if ($upload_log_dir) { 
        $ud_len = strlen($upload_log_dir); 
        $last_slash = substr($upload_log_dir,$ud_len-1,1); 
            if ($last_slash <> "/") { 
                $upload_log_dir = $upload_log_dir."/"; 
            } else { 
                $upload_log_dir = $upload_log_dir; 
            } 
            $handle = @opendir($upload_log_dir); 
                if ($handle) { 
                    $upload_log_dir = $upload_log_dir; 
                    closedir($handle); 
                } else { 
                    $upload_log_dir = "ERROR"; 
                } 
    } else { 
        $upload_log_dir = "ERROR"; 
    } 
    return $upload_log_dir; 
} 

//Function #9 (Upload The File With No Validation)
function upload_file_no_validation() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $file_name = trim(strtolower($this->file_name)); 
    $upload_dir = $this->get_upload_directory(); 
    $upload_log_dir = $this->get_upload_log_directory(); 
    $file_size = $this->get_file_size(); 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $m = date("m"); 
    $d = date("d"); 
    $y = date("Y"); 
    $date = date("m/d/Y"); 
    $time = date("h:i:s A"); 

    //SECTION #2 
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) { 
        return false; 
    } else { 
        if (is_uploaded_file($temp_file_name)) { 
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) { 
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt"; 
                $fp = fopen($log,"a+"); 
                fwrite($fp," 
$ip-$cpu | $file_name | $file_size | $date | $time"); 
                fclose($fp); 
                return true; 
            } else { 
                return false;     
            } 
        } else { 
            return false; 
        } 
    } 
} 

//Function #10 (Upload The File With Validation)
function upload_file_with_validation() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $file_name = trim(strtolower($this->file_name)); 
    $upload_dir = $this->get_upload_directory(); 
    $upload_log_dir = $this->get_upload_log_directory(); 
    $file_size = $this->get_file_size(); 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $m = date("m"); 
    $d = date("d"); 
    $y = date("Y"); 
    $date = date("m/d/Y"); 
    $time = date("h:i:s A"); 
    $existing_file = $this->existing_file();    //<-Add On 
    $valid_user = $this->validate_user();        //<-Add On 
    $valid_size = $this->validate_size();        //<-Add On 
    $valid_ext = $this->validate_extension();    //<-Add On 

    //SECTION #2 
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) { 
	echo "upload directory failure or upload log directory failure";
        return false; 
    } 
    elseif ((((!$valid_user) OR (!$valid_size) OR (!$valid_ext) OR ($existing_file)))) { 
	echo "invalid user, invalid size, invalid extension, existing file";
        return false; 
    } else { 
        if (is_uploaded_file($temp_file_name)) { 
		echo $temp_file_name.$upload_dir. $file_name;
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) { 
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt"; 
                $fp = fopen($log,"a+"); 
                fwrite($fp," 
$ip-$cpu | $file_name | $file_size | $date | $time"); 
                fclose($fp); 
                return true; 
            } else { 
			echo "move file failure";
                return false; 
            } 
        } else { 
		echo "is not uploaded";
            return false; 
        } 
    } 
} 
}
//calling functions
 
$upload_class = new Upload_Files; 
$Name_test = trim($_FILES['upload']['tmp_name']);
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']); 
$upload_class->file_name = trim(strtolower($_FILES['upload']['name'])); 
$upload_class->upload_dir = "/info/www/docs/bios/uploads/"; 
$upload_class->upload_log_dir = "/info/www/docs/bios/uploads/upload_logs"; 
$upload_class->max_file_size = 512000; 
$upload_class->banned_array = array(""); 
$upload_class->ext_array = array(".jpg",".jpeg",".gif",".png"); 

$valid_ext = $upload_class->validate_extension(); 
$valid_user = $upload_class->validate_user(); 
$max_size = $upload_class->get_max_size(); 
$file_size = $upload_class->get_file_size(); 
$file_exists = $upload_class->existing_file(); 
$valid_size = $upload_class->validate_size(); 

    if (!$valid_ext) { 
        $result = "The file extension is invalid, please try again!"; 
    } 
    elseif (!$valid_size) { 
        $result = "The file size is invalid, please try again! The maximum file size is: $max_size and your file was: $file_size"; 
    } 
    elseif (!$valid_user) { 
        $result = "You have been banned from uploading to this server."; 
    } 
    elseif ($file_exists) { 
        $result = "This file already exists on the server, please try again."; 
    } else { 
        $upload_file = $upload_class->upload_file_with_validation(); 
        if (!$upload_file) { 
            $result = "Your file could not be uploaded!"; 
        } else { 
            $result = "Your file has been successfully uploaded to the server."; 
        } 
    }
	
echo $result."<br/>";
include("menu.inc");
echo " to go back to the picture uploading page";	



?> 
<body>
</body>
</html>


#4 fengyuboy

fengyuboy
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 02 September 2006 - 09:58 PM

Are write pernissions correctly set for the target folder?

how to set that?

#5 fengyuboy

fengyuboy
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 02 September 2006 - 10:01 PM

http://www.mun.ca/bios/

Here is the server information.

#6 fengyuboy

fengyuboy
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 04 September 2006 - 03:27 AM

Are write pernissions correctly set for the target folder?

Thanks, you are right, I got permissions set for the target folder, it is now fully functional.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users